2017-08-09 103 views
0

任何人都可以請幫我找出解決辦法 - 我運行下面的查詢MySQL的STR_TO_DATE函數返回NULL

SELECT STR_TO_DATE(order_date, '%d-%m-%Y') FROM `order_master` 

它返回NULL但是我有表2點中的行與值「今天」和'15 -08-2017',我想比較varchar字段與日期,嘗試了很多,但不能成功。謝謝。

+1

記住「不工作」不是一個非常有用的診斷。 – tadman

+1

另外「今日」不是有效日期。 – tadman

+0

@FarhadHemmati - 我試過了,但它不起作用 –

回答

0
SELECT STR_TO_DATE('15-08-2017', '%d-%m-%Y') 

工作得很好。它產生DATE的值2017-08-15

SELECT STR_TO_DATE('Today', '%d-%m-%Y') 

顯然沒有。它產生NULL。

如果返回NULL,則可以使用類似這樣的方法將當前日期替換爲STR_TO_DATE()結果。

SELECT IFNULL(STR_TO_DATE('15-08-2017', '%d-%m-%Y'), CURDATE()) 

但是你最好的選擇就是用這樣的

SELECT IF('Today'=order_date, CURDATE(), STR_TO_DATE(order_date ,'%d-%m-%Y')); 

這將取代當前日期的Todayorder_date值,但留在原地的NULL值,其他畸形order_date值。

+0

謝謝你的回答,但問題是'order_date'字段的'整理',它是'utf32_general_ci',我將它改爲'utf8_unicode_ci',現在它正在工作。 –

+0

請在您的答案中包含我的解決方案,它可能會幫助他人。非常感謝!! –