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
答
你可以使用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 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()
但是那个w如果有的话,可能会禁止查询利用column_date
上的索引。
上面显示的内容应该可以工作。不是吗?如果没有,你能显示一些不起作用的示例值吗? –
如果您正在查找SQL中的当前日期时间,这取决于您正在使用的数据库(mysql/sqlserver/oracle/...) – Andomar
'SELECT * FROM table WHERE column_date> NOW()or column_date is null' – roselan