2009-12-07 10 views
52

Ich verwende ein System, in dem die Daten als Zeichenfolgen im Format dd/mm/yyyy gespeichert werden. Ist es möglich, dies in yyyy-mm-dd in einer SELECT-Abfrage zu konvertieren (so dass ich DATE_FORMAT darauf verwenden kann)? Hat MySQL eine Datumsanalysefunktion?Konvertieren eines Datums in MySQL aus Zeichenfolge Feld

Momentan ist die einzige Methode, die ich mir vorstellen kann, eine Reihe von Teilstrings zu verketten, aber hoffentlich gibt es eine einfachere Lösung.

(Leider kann ich das Feld zu einem echten Datumsfeld nicht konvertieren, da es sich um eine Meta-Tabelle ist:. Die gleiche Spaltenwerte für verschiedene Felder enthält, die nur Strings)

Antwort

111

Dieses:

STR_TO_DATE(t.datestring, '%d/%m/%Y') 

... wird die Zeichenfolge in einen Datetime-Datentyp konvertieren. Um sicher zu sein, dass es in dem Format kommt Sie wünschen, verwenden DATE_FORMAT:

DATE_FORMAT(STR_TO_DATE(t.datestring, '%d/%m/%Y'), '%Y-%m-%d') 

Wenn Sie nicht den Datentyp auf der ursprünglichen Spalte ändern können, schlage ich vor, die den creating a viewSTR_TO_DATE Aufruf verwendet die Zeichenfolge in einem umwandeln DateTime-Datentyp

+1

es war hilfreich und half mir sehr für eine schnelle Lösung –

4

STR_TO_DATE ermöglicht es Ihnen, dies zu tun, und es hat ein Format-Argument.

17

Ja, es ist str_to_date

mysql> select str_to_date("03/02/2009","%d/%m/%Y"); 
+--------------------------------------+ 
| str_to_date("03/02/2009","%d/%m/%Y") | 
+--------------------------------------+ 
| 2009-02-03       | 
+--------------------------------------+ 
1 row in set (0.00 sec) 
0
SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable... 
Verwandte Themen