SQL和日期比较

时间:2011-09-18 15:01:35

标签: php sql date

我有一个sql语句,我选择了一些项目,但我需要确保我保存的日期大于当前日期。

SELECT * FROM table WHERE column_date > current_date

如何使代码完成,正常工作?

列日期保存如此00:00:00(通常保存,换句话说)。


这是我尝试实现的目标:和时间> current_date或时间== NULL但它不起作用。时间列目前是00:00:00,这是NULL,对吧?

或者我该怎么做,它必须大于或等于0000-00-00 00:00:00

3 个答案:

答案 0 :(得分:2)

如果您使用的是MySQL,NOW()应该可以解决问题。

SELECT * FROM table WHERE column_date > NOW()

如果您想消除时间值并仅与日期值进行比较,可以使用以下内容:

SELECT * FROM table WHERE column_date > CURDATE()

答案 1 :(得分:1)

您可以使用Mysql函数NOW()

SELECT * FROM table WHERE column_date > NOW()

答案 2 :(得分:0)

根据this documentation article0000-00-00是一个“虚拟日期”,可以使用而不是 NULL,这意味着0000-00-00本身不是 NULL。

鉴于0000-00-00不能大于任何其他日期,您应使用OR条件:

SELECT * FROM table WHERE column_date > NOW() OR column_date = '0000-00-00'

或工会:

SELECT * FROM table WHERE column_date > NOW()
UNION ALL
SELECT * FROM table WHERE column_date = '0000-00-00'

或者你可以使用这样的结构:

SELECT *
FROM table
WHERE IFNULL(NULLIF(column_name, '0000-00-00'), '9999-12-31') > NOW()

但这可能会禁止查询利用column_date上的索引(如果有的话)。