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 中,我有一个 timestart 和 value = 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 天。
如果日期是从现在起 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 中,我有一个 timestart 和 value = 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 天。