MySQL 日期间隔不起作用

MySQL Date Interval not working

如果日期是从现在起 21 天,我遇到了麻烦 select。所以不是现在到 21 天之间,而是只有从今天起 21 天后才会举行的会议。

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

我的 SQL 查询是:

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

如您所见,我想要 select 开始时间为从现在起 21 天的所有会话。 21 天后应该是 2015 年 4 月 15 日

查询总是returns0行...。在我的 table 中,我有一个 timestartvalue = 1429081200 。当您使用 this 计算日期时,您会看到它是 2015 年 4 月 15 日。为什么我没有返回任何行?

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

尝试

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

尝试使用 BETWEEN从今天起 21 天的 24 小时周期内的任何地方查找任何具有 timestart 值的行:

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

curdate() returns 今天开始的午夜,所以从今天开始的 21 天就是从午夜开始的 22 天。