日期差异,包括时间
问题描述:
我有数据库表,其结构如下:日期差异,包括时间
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秒)
任何建议之一一天?
答
可以以另一种方式您的日期比较:
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' 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