日期差异,包括时间

时间:2011-03-15 07:00:49

标签: mysql

我有数据库表,其结构如下:

id  int
name varchar(20)
dob  datetime

我需要查找日期时间差异大于1天的记录

我知道datediff()可以工作,但我也想在计算中包括时间(小时,分钟,秒)

实施例:    2011-02-14 13:05:06 (是 2011-02-15 13:05:06 的一天)   但 2011-02-14 13:05:06(不是 2011-02-15 13:04:06 的一天)

有什么建议吗?

5 个答案:

答案 0 :(得分:6)

使用TIME_TO_SEC

SELECT TIME_TO_SEC(TIMEDIFF('2011-02-14 13:05:06','2011-02-15 13:06:06'))/86400;

答案 1 :(得分:2)

您可以通过其他方式比较日期:

date1 < date_sub(date2, interval 1 day)

如果date2和date1之间的差异超过1天

,则此比较将为真

答案 2 :(得分:0)

SELECT * FROM `table` 
WHERE `dob` NOT BETWEEN 
    '2011-02-14 13:05' - INTERVAL 1 DAY 
    AND 
    '2011-02-14 13:05' + INTERVAL 1 DAY

答案 3 :(得分:0)

select concat(TIMESTAMPDIFF(day,concat(small_date,' ',small_time),concat(big_date,' ',big_time))%24 ,' day ' ,
sec_to_time((TIMESTAMPDIFF(second,concat(small_date,' ',small_time),concat(big_date,' ',big_time))) -(
TIMESTAMPDIFF(day,concat(small_date,' ',small_time),concat(big_date,' ',big_time))%24*86400))) `datetimediff`
from tmp

答案 4 :(得分:0)

SELECT TIME_TO_SEC(TIMEDIFF('2011-02-14 13:05:06','2011-02-15 13:06:06'))/86400;

并非每天都有86400秒!因此,每年两次会出现错误答案,夏季/冬季时间会发生变化,而一天则会延长或缩短一小时。