为了账号安全,请及时绑定邮箱和手机立即绑定

为什么使用 CAST 添加 TIME 并不适用于 MySQL 中的每一行?

为什么使用 CAST 添加 TIME 并不适用于 MySQL 中的每一行?

PHP
慕神8447489 2023-11-03 16:51:24
我正在使用这个查询SELECT *, cast(seg1 + seg2 as time) FROM tablename,但它只添加了最后两行,为什么?每个 seg* 列都是TIME类型。最后两行是在 phpMyAdmin 中手动添加的,其他行是通过 Yii 框架 ActiveQuery 添加的。这是 PhpMyAdmin 的结果:
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

当你对两个值求和时,MYSQL 中会发生奇怪的事情time。也就是说,MySQL 将两个值转换为数字(仅删除字符':'),然后将它们相加。考虑这个例子:

select cast('12:43:34' as time) + cast('04:09:32' as time) res
|    res |
| -----: |
| 165266 |

结果在哪里124334 + 40932

执行所需操作的一种方法是将时间转换为秒,将它们相加,然后将结果转换为时间:

select t.*, sec_to_time(time_to_sec(seg1) + time_to_sec(seg2)) total_time
from tablename t


查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信