将Unix时间戳与日期进行比较,忽略时间

时间:2013-08-22 20:41:07

标签: php mysql

关于这个问题有很多重复,但是,它们没有用。

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

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))

帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

此外,您上面的所有WHERE条款都相当于WHERE TRUE,并会返回所有列。

另外,要测试WHERE实际上正在查看的内容,请尝试执行以下操作:

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

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

答案 1 :(得分:1)

在Unixtime中每天有86400秒,因此无需强制转换为DATE / TIMESTAMP:

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

或者如果ts1是INTEGER

WHERE ts1/86400 = ts2/86400