2009-12-07 14 views
52

Sto utilizzando un sistema in cui le date sono memorizzate come stringhe nel formato dd/mm/yyyy. È possibile convertire questo in yyyy-mm-dd in una query SELECT (in modo che io possa utilizzare DATE_FORMAT su di esso)? MySQL ha una funzione di analisi della data?Conversione di una data in MySQL dal campo stringa

Attualmente l'unico metodo che posso pensare è concatenare una serie di sottostringhe, ma speriamo ci sia una soluzione più semplice.

(Purtroppo non riesco a convertire il campo per un vero e proprio campo data dal momento che è una meta-tavolo:. La stessa colonna contiene i valori per i diversi campi che sono solo stringhe)

risposta

111

questo:

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

... convertirà la stringa in un tipo di dati datetime. Per essere sicuri che esce nel formato desiderato, utilizzare DATE_FORMAT:

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

Se non è possibile modificare il tipo di dati sulla colonna originale, suggerisco creating a view che utilizza la chiamata STR_TO_DATE per convertire la stringa in un Tipo di dati DateTime.

+1

è utile e mi ha aiutato molto per una soluzione rapida –

17

Sì, c'è 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... 
Problemi correlati