日期差异,包括时间

问题描述:

我有数据库表,其结构如下:日期差异,包括时间

id int 
name varchar(20) 
dob datetime 

我需要找出那些记录日期时间差大于1天

我知道,DATEDIFF()可以工作,但我还希望包括在计算时间(小时,分钟,秒)

实施例: 2011-02-14 13时05分06秒(距离2011-02-15 131天:05:06) 但 2011-02-14 13点05分06秒(是不是从2011-02-15 13点04分06秒

任何建议之一一天?

使用TIME_TO_SEC

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

可以以另一种方式您的日期比较:

date1 < date_sub(date2, interval 1 day) 

这种比较是事实,如果DATE2和日期1之间的差值超过1天

+0

@Jacob:如果'date2' zerkms 2011-03-15 07:19:20

+0

对不起,我的意思是说OP需要返回true的东西,如果date2大于1天以内或date2大于1天多于date1。如果date2比date1大1天以上,这只会被捕获。 – Jacob 2011-03-15 07:25:42

+0

@Jacob:可能是。 OP的要求很模糊...... – zerkms 2011-03-15 07:42:40

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

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 

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

不是每天都有86400秒!所以当夏季/冬季时间发生变化时,每天会有两次错误的回答,而且一天的时间会延长或缩短一小时。