我有數據庫表,其結構如下:日期差異,包括時間
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秒)
任何建議之一一天?
我有數據庫表,其結構如下:日期差異,包括時間
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秒)
任何建議之一一天?
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天
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秒!所以當夏季/冬季時間發生變化時,每天會有兩次錯誤的回答,而且一天的時間會延長或縮短一小時。
@Jacob:如果'date2' <'date1'表示比較總是返回false – zerkms 2011-03-15 07:19:20
對不起,我的意思是說OP需要返回true的東西,如果date2大於1天以內或date2大於1天多於date1。如果date2比date1大1天以上,這隻會被捕獲。 – Jacob 2011-03-15 07:25:42
@Jacob:可能是。 OP的要求很模糊...... – zerkms 2011-03-15 07:42:40