我有一个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
答案 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 article,0000-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
上的索引(如果有的话)。