MySQL – Cambia la stringa della data in base al tipo di data in atto?

(Ciao a tutti, sono new-ish per SQL e MySQL in particolare, conosco alcuni PHP.)

Ho una tabella che contiene una colonna “date_string”. Per motivi legacy, questo è un campo di testo, contenente la data nel formato d / m / YY. ad es. “22/11/09” per il 22 novembre 2009.

Domanda: come posso convertire tutti i campi di questa colonna in un formato di data standard MySQL (AAAA-mm-gg), sul posto?

Oppure, non riuscendo a modificarlo, dato che il tipo di colonna è testo, come potrei prendere ogni data basata su testo esistente e creare una data standard in un’altra colonna (di tipo ‘data’) all’interno della tabella?

Grazie per qualsiasi aiuto.

Probabilmente vuoi usare la funzione STR_TO_DATE() .

 SELECT STR_TO_DATE(textdate, '%d/%m/%y') FROM MyTable... 

Oppure crea un’altra colonna con il tipo di dati DATE e copia i valori:

 ALTER TABLE MyTable ADD COLUMN realdate DATE; UPDATE MyTable SET realdate = STR_TO_DATE(textdate, '%d/%m/%y'); 
  UPDATE your_table SET your_col = '20' + substring(your_col, LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1 ) + '-' + substring(your_col, LOCATE('/', your_col) + 1, LOCATE('/', your_col, LOCATE('/', your_col) + 1) ) + '-' + substring(your_col, 1, LOCATE('/', your_col) - 1) /* LOCATE('/', your_col) -> search for 1st occurence of '/' in your_col LOCATE('/', your_col, LOCATE('/', your_col) + 1) -> search for 2nd occurence of '/' in your_col LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1 -> from where to retriev the last part */ 

(Suppongo che l’anno> = 2000)

se hai problemi a farlo da MySQL, puoi provare con PHP convertendo le date usando strtotime ()