Mysql
 sql >> Database >  >> RDS >> Mysql

Converti string/varchar fino ad oggi tra tabelle MySQL

Dai un'occhiata a STR_TO_DATE funzione:

UPDATE yourtable
SET
  new_column = STR_TO_DATE(varchar_date, '%m-%d-%Y')
WHERE
  STR_TO_DATE(varchar_date, '%m-%d-%Y') IS NOT NULL

E poi la stessa query, con il formato della data '%m/%d/%Y' , e poi ancora con '%M %D, %Y' .Se il formato non corrisponde, STR_TO_DATE restituirà NULL e le righe non verranno aggiornate.

Se desideri inserire i tuoi dati esistenti in una nuova tabella, puoi utilizzare qualcosa del genere:

INSERT INTO new_table (ID, col1, col2, new_column)
SELECT
  ID, col1, col2,
  COALESCE(STR_TO_DATE(varchar_date, '%m-%d-%Y'),
           STR_TO_DATE(varchar_date, '%m/%d/%Y'),
           STR_TO_DATE(varchar_date, '%M %D, %Y'))
FROM oldtable

(new_column è una colonna di data e puoi quindi formattare come vuoi usando PHP o usando DATE_FORMAT)