2011-09-18 98 views
2

我有一個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

回答

1

你可以使用MySQL函數NOW()

SELECT * FROM table WHERE column_date > NOW() 
2

如果你是使用MySQL,NOW()應該做的伎倆。

SELECT * FROM table WHERE column_date > NOW() 

如果你想消除的時間價值,只是比較日期值,下面可以使用:

SELECT * FROM table WHERE column_date > CURDATE() 
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() 

但是那個w如果有的話,可能會禁止查詢利用column_date上的索引。