mysql - 使用 MySQL CURDATE() 和 CURTIME() 返回即将到来但未通过的结果

标签 mysql

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

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

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

如果有人知道执行此操作的好方法,我将非常感谢您的帮助。

最佳答案

在 SQL 中有效表达这一点并利用日期和/或时间列上的任何索引的最简单方法是这样的查询:

SELECT * 
FROM your_table 
WHERE date_column > current_date()
OR (date_column = current_date() AND time_column > current_time())

根据您使用的 MySQL 版本以及表的索引方式,优化器有可能更喜欢将查询表示为两个 SELECT 联合在一起以避免 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()

关于mysql - 使用 MySQL CURDATE() 和 CURTIME() 返回即将到来但未通过的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304273/

相关文章:

mysql - (按位)MySQL 中的超集和子集

php - 在数据库中分别更新多个图像

php - VBulletin无法连接MySQL数据库

mysql - 如何连接 2 个 MySQL 表而不返回所有连接行

c# - ASP.NET使用SqlConnection连接MySQL

php - 从 db 中获取单选按钮值并且还希望检查单选按钮

mysql - 在一个查询中两次设置相同的随机值以在 MySql 中进行加密

php - 1064错误,不确定是什么问题

mysql - 有没有更简单的方法来编写这个查询?

7 天前的 MYSQL 日期时间行?