我正在使用如下 SQL 查询:
SELECT * FROM game_list
WHERE start_date <= DATE(NOW()) AND end_date >= DATE(NOW())
ORDER BY game_id DESC;
现在,这实际上什么时候开始和结束?我的意思是我知道什么日期,但时间是几点,是午夜、上午 12 点、下午还是什么?
如果我理解正确,您只想在当前时间在开始时间和结束时间之间时才显示游戏,在这种情况下,您实际上需要的是:
SELECT * FROM game_list
WHERE DATE(NOW()) >= start_date AND DATE(NOW()) <= end_date
ORDER BY game_id DESC;
这样它应该可以正常工作我能看到的唯一问题是如果你没有正确格式化你的 start_date 和 end_date。
我会仔细检查 start_date 返回的内容并做出相应决定,作为参考,我会在这里查看mysql 中的日期和时间
如果您询问该DATE
函数是如何工作的:它只是提取日期时间的日期部分。
见http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date
SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31
这仅代表那一天。再次被视为日期时间,它将变为午夜(2003-12-31 00:00:00)
我认为您想要以下内容
SELECT * FROM game_list
WHERE start_date <= DATE(NOW()) AND end_date >= DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY game_id DESC;
上面的查询获取今天之前开始并且结束日期大于明天日期的记录