【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多