我有数据库表,其结构如下:
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 的一天)
有什么建议吗?
答案 0 :(得分:6)
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秒!因此,每年两次会出现错误答案,夏季/冬季时间会发生变化,而一天则会延长或缩短一小时。