MySQL Date Interval无法正常工作

时间:2015-03-25 09:46:56

标签: php mysql date timestamp unix-timestamp

我在选择未来会议时遇到的麻烦是从现在开始的21天。所以从现在到21天之间不是这样,而是仅在今天21天后举行。

在我的表dx_sessions_dates中,我有一个 BIGINT 类型的字段timestart,其中保存了时间戳(为什么BIGINT而不是TIMESTAMP? - >不是我的DB,但无法改变它......)。

我的SQL查询是:

SELECT timestart, timefinish, sessionid FROM `dx_sessions_dates` WHERE timestart = UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL 21 DAY))

如您所见,我想选择所有会话,其中timestart是从现在开始的21天。 从现在开始的21天应该是2015年4月15日

查询始终返回 0 行....在我的表格中,我有value = 1429081200时间启动。当您使用this计算日期时,您会看到 2015年4月15日。为什么我没有收到任何行?

2 个答案:

答案 0 :(得分:1)

您计算的unixtimestamp永远不会是您存储的值的时刻。你只需要在同一天。

尝试

SELECT timestart, timefinish, sessionid 
FROM `dx_sessions_dates` 
WHERE date(FROM_UNIXTIME(timestart)) = curdate() + interval 21 DAY

答案 1 :(得分:0)

尝试使用BETWEEN查找在距离今天21天的24小时内

内的任何时间值的行。

SELECT timestart, timefinish, sessionid 
FROM dx_sessions_dates
WHERE timestart BETWEEN UNIX_TIMESTAMP(adddate( curdate(), 21)) AND UNIX_TIMESTAMP(adddate(curdate(), 22))

curdate()在今天开始的午夜返回,所以从今天开始的21天是从午夜开始的22天。