2012-03-14 94 views
0

我遇到了MySQL format_date問題,不明白爲什麼。我有以下爲我的代碼部分:MySQL FORMAT_DATE%d返回'0'

date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') 

這似乎是做工精細,除了那無論我選擇日期時,%d正在恢復作爲一個零(0)的事實。如果我將%d更改爲%e,我可以得到正確的日期,但我使用它來比較日期,因此我需要低於10的數字的前導零。這是數據庫設置,還是我錯過了明顯的東西?

在此先感謝。

更新:我覺得它有什麼東西在數據庫中,因爲當我簡化查詢到這一點:

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') as 'today' from content_field_date LIMIT 1"; 

「今天」打印出爲「2012-03-0」

同時,這樣的:

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%e') as 'today' from content_field_date LIMIT 1"; 

正確返回 '2012-03-17'

Zeth

+2

奇。如果我運行'SELECT date_format(NOW()+ INTERVAL 3 DAY,'%Y-%m-%d')'它會正確顯示。我想知道它是否與你的語言環境有關? – 2012-03-14 19:32:04

+0

你能顯示完整的查詢嗎?這不應該發生。 – 2012-03-14 19:32:55

+0

它在這裏也不顯示'0'。如果你的目標是比較日期,你也可以在mysql中完成。 – 2012-03-14 19:35:02

回答

1

你描述的是什麼不應該發生。你要麼發現MySQL錯誤,要麼你做錯了什麼。

如果你只是想比較日期,你可以在MySQL內部做到這一點,你可能根本不應該使用DATE_FORMAT()。您可以使用它來得到一個日期:

DATE(NOW() + INTERVAL 3 DAY) 

或:

(CURDATE() + INTERVAL 3 DAY) 
+0

我將當前日期與數據庫中的字段'YYYY-MM-DD'進行比較,因此需要格式化,除非我錯過了某些內容? – Zeth 2012-03-14 19:55:47

+0

列'CHAR'和格式是這樣還是'DATE'列? – 2012-03-14 19:57:00

+1

無論哪種情況'column 2012-03-14 19:59:15