1

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

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

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

帮助将不胜感激。

4

2 回答 2

1

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

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

或者如果 ts1 是一个整数

WHERE ts1/86400 = ts2/86400
于 2013-08-22T20:53:25.597 回答
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))
于 2013-08-22T20:47:01.207 回答