SQL和日期比较

问题描述:

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

SELECT * FROM table WHERE column_date > current_date 

如何使代码结束工作?

列日期保存为这样0000-00-00 0000-00-00 00:00:00(通常保存,换句话说)。


这是我试图实现的:AND时间> current_date或时间== NULL但它不工作。时间列当前是00:00:00,它是NULL,对吧?

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

+2

上面显示的内容应该可以工作。不是吗?如果没有,你能显示一些不起作用的示例值吗? –

+2

如果您正在查找SQL中的当前日期时间,这取决于您正在使用的数据库(mysql/sqlserver/oracle/...) – Andomar

+0

'SELECT * FROM table WHERE column_date> NOW()or column_date is null' – roselan

你可以使用MySQL函数NOW()

SELECT * FROM table WHERE column_date > NOW() 

如果你是使用MySQL,NOW()应该做的伎俩。

SELECT * FROM table WHERE column_date > NOW() 

如果你想消除的时间价值,只是比较日期值,下面可以使用:

SELECT * FROM table WHERE column_date > CURDATE() 

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() 

但是那个w如果有的话,可能会禁止查询利用column_date上的索引。