Een datum converteren in MySQL vanuit het stringveld

Ik gebruik een systeem waarbij de datums worden opgeslagen als strings in het formaat dd/mm/yyyy. Is het mogelijk om dit te converteren naar yyyy-mm-ddin een SELECT-query (zodat ik DATE_FORMATerop kan gebruiken)? Heeft MySQL een functie voor het ontleden van datums?

Momenteel is de enige methode die ik kan bedenken het samenvoegen van een aantal substrings, maar hopelijk is er een eenvoudigere oplossing.

(Helaas kan ik het veld niet converteren naar een echt datumveld omdat het een metatabel is: dezelfde kolom bevat waarden voor verschillende velden die slechts tekenreeksen zijn.)


Antwoord 1, autoriteit 100%

Dit:

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

…zal de string converteren naar een datetime datatype. Gebruik DATE_FORMAT:

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

Als je het datatype in de originele kolom niet kunt wijzigen, raad ik je een weergave makendie de STR_TO_DATE-aanroep gebruikt om de tekenreeks naar een DateTime-gegevenstype te converteren.


Antwoord 2, autoriteit 14%

Ja, er is 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)

Antwoord 3, autoriteit 3%

STR_TO_DATE stelt u in staat om dit te doen, en het heeft een formaatargument.


Antwoord 4

SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...

Other episodes