2017-02-27 87 views
0

更改MySQL的日期格式我試圖讓下面的查詢工作,但0行受到了影響:通過更新

UPDATE table_x 
SET sql_date = DATE(STR_TO_DATE(date_string,'%Y-%m-%d')) 
WHERE sql_date = '0000-00-00' 

列DATE_STRING日期​​格式爲:「%d%M%Y。」

我在做什麼錯? 謝謝

+0

「之列DATE_STRING日期​​格式爲: '%d%M%Y。'」 - 那你爲什麼在查詢中使用''%Y-%間%D''? –

+0

f ....我想我必須使用目標格式。但當然這是一個愚蠢的想法。謝謝你的提示。 – benny

回答

1

你的列date_string已經是「yyyy-dd-mm」,那你爲什麼要更新。 你仍然可以比較日期按如下:

UPDATE table_x set sql_date = DATE(STR_TO_DATE(date_string,'%Y-%m-%d')) 
WHERE date(sql_date) = '0000-00-00'; 

所以它會跳過時間戳和比較你的通行證迄今爲止,只有日期。 日期函數將只從存儲的日期獲取日期。所以如果「1992-11-06 00:00:00」存儲在數據庫中,那麼它只會比較「1992-11-06」。

0

你說date_string的格式是'%d.%m.%Y'。但是,您錯誤地將'%Y-%m-%d'指定爲STR_TO_DATE。此外,當您將字符串轉換爲日期時,您在此日期應用DATE。爲什麼?

UPDATE table_x 
SET sql_date = STR_TO_DATE(date_string, '%d.%m.%Y') 
WHERE sql_date = '0000-00-00'; 
+0

謝謝。就像保羅西格爾評論的那樣。我沒有用足夠的小腦袋。 – benny