subtime返回不正确的时差值

np8igboo  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(239)

我有两次,开始时间和结束时间,结束时间总是大于开始时间,我的情况是:
子时间('22:00','06:00')
它返回16:00,因为它认为它是同一个日期,但是06:00更大,所以差异应该是08:00。我试过交换,但结果是-16。
有没有一种方法可以在不将日期添加到时间值的情况下获得正确的值?
最后做了这个

SELECT * FROM Table
WHERE check_in BETWEEN CONCAT(schedule_date,' ',start_time) AND (CASE WHEN(SUBTIME(end_time, start_time) < 0) THEN CONCAT(schedule_date + INTERVAL 1 DAY,' ',end_time) ELSE CONCAT(schedule_date,' ',end_time) END)
u4vypkhs

u4vypkhs1#

那就不要用简单的时间,而是日期。

SELECT TIMESTAMPDIFF(HOUR, CONCAT('1970-01-01 ', '22:00'), CONCAT('1970-01-02 ', '06:00'));

这是回报 8 ,当你想把它作为 08:00 ,请尝试以下操作:

SELECT SEC_TO_TIME(TIMESTAMPDIFF(SECOND, CONCAT('1970-01-01 ', '22:00'), CONCAT('1970-01-02 ', '06:00')));

相关问题