2015-12-16 30 views
1

我在MySQL中遇到了一行代碼問題。我正在嘗試將下面的代碼行寫入到我已經擁有並且可行的select語句中。在此之前和之後,我在線前後都有一個逗號來處理字段。 support_due_date字段是日期字段。用於轉換和格式化日期的MySQL語法錯誤

ISNULL(DATE_FORMAT(support_due_date, '%m/%d/%Y'), '01/01/1900') as support_due_date2 

我得到一個語法錯誤。 support_due_date字段有一些空值和一些日期值。我想將字段格式化爲M/D/YYYY格式,如果字段爲空,則將其更改爲01/01/1900。我究竟做錯了什麼?任何幫助,將不勝感激。如果有幫助,我使用版本5.2.47。

+2

它看起來像你想要['IFNULL()'](https://dev.mysql.com/doc/en/control-flow-functions.html#function_ifnull)代替['ISNULL()']( https://dev.mysql.com/doc/en/comparison-operators.html#function_isnull) - 儘管使用這樣的「魔術」值,一般來說,這是一個非常糟糕的想法。爲什麼不在結果集中保留NULL,並在應用程序代碼中正確檢測/處理? – eggyal

回答

0

ISNULL()本身只是計算結果爲true或基於傳遞的參數錯誤;我相信你的語法錯誤是由於試圖將2個逗號分隔參數傳遞給該函數。我想,你實際上在尋找的是更像if(isnull(support_due_date), '01/01/1900', date_format(support_due_date, '%m/%d/%Y')) as support_due_date2的東西。

用於控制流語句(包括if())文檔是here

這就是說,eggyal使得有關魔法值的好點在他們對你的問題的評論 - 恕我直言,有一個時間和這兩種方法的地方,只是要考慮的事情。

+0

呃,好吧http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_isnull – nthall

+0

由於它的確是IFNULL(),下面的代碼行做的伎倆:IFNULL(DATE_FORMAT (AC.support_due_date_c,'%m /%d /%Y'),'01/01/1900')AS support_due_date3 @Azim感謝你們兩位! – mrbill65