2012-09-07 73 views
4

我有這種格式的日期5 Mar 1985 0:00存儲在表中作爲VARCHAR
我想把它轉換成Datetime,我現在用的是STR_TO_DATE()如下:MySQL的STR_TO_DATE()函數

SELECT STR_TO_DATE(birth_date, '%d %m %Y %h:%i') FROM student WHERE pk = 29 

但它返回NULL

+0

您應該使用MySQL的標準日期格式,而不是您自己定製的日期格式。如果你真的這樣做,你不必擔心。 –

+0

我實際上已經存儲在表(birth_date varchar 100)中的值我需要將其轉換爲日期時間。 – user1369905

+0

請參閱:http://www.w3schools.com/sql/func_date_format.asp – Omesh

回答

1

嘗試STR_TO_DATE(birth_date, '%d %M %Y %h:%i')代替

的整數%m =月 %M =一個月字符串(如:3月)

+0

這一個沒有工作。 – user1369905

+0

是的你是對的,但它仍然沒有工作。 – user1369905

+0

也許是因爲日期格式無效?它應該是'1985年3月5日00:00'。請嘗試:'STR_TO_DATE(birth_date,'%d%M%Y 0%h:%i') – Cosmin

5

試試這個格式 - '%e %b %Y %k:%i',例如 -

SELECT STR_TO_DATE('5 Mar 1985 2:33', '%e %b %Y %k:%i') dt; 
+---------------------+ 
| dt     | 
+---------------------+ 
| 1985-03-05 02:33:00 | 
+---------------------+ 
+0

%b幾個月的縮寫。 完美謝謝 – user1369905

+1

@ user1369905您應該接受適合您的答案。請參閱[接受答案:它是如何工作的](http://meta.stackexchange.com/a/5235/187824) – hims056

+0

+1請參閱:http://www.w3schools.com/sql/func_date_format.asp – Omesh