sql >> Base de Datos >  >> RDS >> Mysql

Convertir cadena/varchar hasta la fecha entre tablas MySQL

Eche un vistazo a STR_TO_DATE función:

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

Y luego la misma consulta, con formato de fecha como '%m/%d/%Y' , y luego otra vez con '%M %D, %Y' .Si el formato no coincide, STR_TO_DATE devolverá NULL y las filas no se actualizarán.

Si desea insertar sus datos existentes en una nueva tabla, podría usar algo como esto:

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 es una columna de fecha, y luego puede formatear como desee usando PHP o usando DATE_FORMAT)