MySQL日期间隔不起作用


MySQL Date Interval not working

如果日期是21天后,我在选择未来的会话时遇到了问题。所以不是从现在到21天,而是从今天起21天内举行的会议。

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

我的SQL查询是:

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

正如你所看到的,我想选择时间开始为21天后的所有会话21天后应为2015年4月15日

查询总是返回0行。在我的表中,我有一个value = 1429081200的时间开始。当你用这个计算日期时,你会发现它是2015年4月15日。为什么我不收回一排?

您计算的unixtimestamp从来都不是您存储的值的时刻。你只需要同一天。

尝试

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

尝试使用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天。