使用MySQL CURDATE()和CURTIME()返回结果但未通过

时间:2011-03-14 20:44:42

标签: mysql

我网站的用户将能够创建活动。他们将分别设定日期和时间。该事件将保存到包含单独日期和时间列的mysql数据库中。

我想查询数据库以返回已启动但未通过的事件。即活动日期是今天或将来,如果活动日期是今天,请检查活动时间是否已过去。

我不知道这个的语法,我似乎无法在任何地方找到它。

如果有人知道这样做的好方法,我非常感谢你的帮助。

3 个答案:

答案 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))