MariaDb timediff函数正在计算错误的小时数

时间:2018-06-13 10:29:08

标签: mysql mariadb

晚上8点到早上6点之间的时差应为10小时,但是给出14小时

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

2 个答案:

答案 0 :(得分:1)

您应该更正数据类型:

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

<强> DBFiddle Demo

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

答案 1 :(得分:0)

如果您确定是否单独选择了部分,则TIME没有DATE部分:

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

输出:

06:00:00 20:00:00 

所以14是正确的

这是SQLFIDDLE

中的示例