2013-08-22 108 views
1

关于这个问题有很多重复,但他们没有奏效。不考虑时间比较Unix时间戳到日期

下面是问题,我有两个不同的时间和相同的日期转换为时间戳存储在我的数据库。

Timestamp 1 = 1376983800 (2013-08-20 15:30:00) 
Timestamp 2 = 1376987400 (2013-08-20 16:30:00) 

我有需要与日期不顾自己的时间来比较这两个值。

视觉表征

比方说,这应该是2013-08-20 = 2013-08-20

2013-08-20 15:30:00 = 2013-08-20 16:30:00

现在的问题是如何使用查询办呢?

下面这些WHERE子句查询不适用于我。

WHERE DAYOFMONTH(FROM_UNIXTIME(1376983800)) = DAYOFMONTH(FROM_UNIXTIME(1376987400)) 

WHERE DAY(FROM_UNIXTIME(1376983800)) = DAY(FROM_UNIXTIME(1376987400)) 

WHERE DAYOFYEAR(FROM_UNIXTIME(1376983800)) = DAYOFYEAR(FROM_UNIXTIME(1376987400)) 

将不胜感激。

回答

1
SELECT columns 
FROM table 
WHERE DATE(FROM_UNIXTIME(stamp1)) = DATE(FROM_UNIXTIME(stamp2)) 

而且,所有的WHERE条款以上相当于WHERE TRUE和将返回所有列。

此外,以测试你的WHERE s的实际看尝试做这样的事情:

SELECT DAYOFMONTH(FROM_UNIXTIME(1376983800)), DAYOFMONTH(FROM_UNIXTIME(1376987400)); 

SELECT DATE(FROM_UNIXTIME(1376983800)), DATE(FROM_UNIXTIME(1376987400)) 
1

在Unixtime有每天86400秒,所以没有必要投到DATE/TIMESTAMP:

WHERE ts1 - mod(ts1, 84000) = ts2 - mod(ts2, 84000) 

或者如果ts1是INTEGER

WHERE ts1/86400 = ts2/86400