mariadb timediff函数计算错误的小时数

qvtsj1bj  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(364)

晚上8点到早上6点之间的时差应该是10个小时,但实际上是14个小时

SELECT HOUR(TIMEDIFF(TIME('2018-06-01 20:00:00'),TIME('2018-06-02 06:00:00'))) AS NoofHours
hpxqektj

hpxqektj1#

您应该更正数据类型:

SELECT HOUR(TIMEDIFF(TIMESTAMP('2018-06-01 20:00:00'),
                     TIMESTAMP('2018-06-02 06:00:00'))) AS NoofHours
                     -- TIME != TIMESTAMP

dbfiddle演示 TIME 跳过日期部分。

SELECT TIME('2018-06-01 20:00:00'), TIME ('2018-06-02 06:00:00')
-- 20:00:00                         06:00:00

使用 TIMESTAMPDIFF 功能:

SELECT TIMESTAMPDIFF(HOUR,
                     TIMESTAMP('2018-06-01 20:00:00'),
                     TIMESTAMP('2018-06-02 06:00:00')) AS NoofHours
cfh9epnr

cfh9epnr2#

如您所见,如果单独选择部分,则时间没有日期部分:

SELECT TIME('2018-06-01 06:00:00'), TIME('2018-06-02 20:00:00')

输出:

06:00:00 20:00:00

所以14是正确的
下面是sqlfiddle中的一个示例

相关问题