我网站的用户将能够创建活动。他们将分别设定日期和时间。该事件将保存到包含单独日期和时间列的mysql数据库中。
我想查询数据库以返回已启动但未通过的事件。即活动日期是今天或将来,如果活动日期是今天,请检查活动时间是否已过去。
我不知道这个的语法,我似乎无法在任何地方找到它。
如果有人知道这样做的好方法,我非常感谢你的帮助。
答案 0 :(得分:2)
在SQL中有效表达这一点并使用日期和/或时间列上的任何索引的最简单方法是这样的查询:
SELECT *
FROM your_table
WHERE date_column > current_date()
OR (date_column = current_date() AND time_column > current_time())
根据您使用的MySQL版本以及您的表的索引方式,优化程序很可能更倾向于将查询表示为两个SELECT UNIONed以避免OR:
SELECT *
FROM your_table
WHERE date_column > current_date()
UNION
SELECT *
FROM your_table
WHERE date_column = current_date()
AND time_column > current_time()
答案 1 :(得分:0)
select * from table where concat_ws(' ',date_field,time_field) > now()
为什么不使用日期时间字段?
答案 2 :(得分:0)
在伪代码中
if ((date > today) OR (date == today AND time > now))