【问题标题】:Why adding TIMEs with CAST does not work for every row in MySQL?为什么使用 CAST 添加 TIME 不适用于 MySQL 中的每一行?
【发布时间】:2020-08-25 23:36:34
【问题描述】:
我正在使用这个查询 SELECT *, cast(seg1 + seg2 as time) FROM tablename 但它只添加了最后 2 行,为什么?
每个 seg* 列都是 TIME 类型。
最后两行是在 phpMyAdmin 中手动添加的,其他行是通过 Yii 框架 ActiveQuery 添加的。
这是来自 PhpMyAdmin 的结果:
【问题讨论】:
标签:
php
mysql
sql
datetime
sum
【解决方案1】:
当您将两个 time 值相加时,在 MYSQL 中会发生奇怪的事情。也就是说,MySQL 将两个值都转换为数字(只需删除':' 字符),然后将它们相加。考虑这个例子:
select cast('12:43:34' as time) + cast('04:09:32' as time) res
|资源 |
| -----: |
| 165266 |
结果是124334 + 40932。
做你想做的事情的一种方法是将时间转换为秒,添加它们,然后将结果转换为时间:
select t.*, sec_to_time(time_to_sec(seg1) + time_to_sec(seg2)) total_time
from tablename t