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

Konverter streng/varchar til dato mellem MySQL-tabeller

Tag et kig på STR_TO_DATE funktion:

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

Og så den samme forespørgsel med datoformat som '%m/%d/%Y' , og derefter igen med '%M %D, %Y' .Hvis formatet ikke stemmer overens, returnerer STR_TO_DATE NULL, og rækker vil ikke blive opdateret.

Hvis du ønsker at indsætte dine eksisterende data i en ny tabel, kan du bruge noget som dette:

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

(ny_kolonne er en datokolonne, og du kan derefter formatere, som du vil ved hjælp af PHP eller ved at bruge DATE_FORMAT)



  1. Hvorfor virker mit database backup-script ikke i php?

  2. Find ud af, om et objekt er en fremmednøgle med OBJECTPROPERTY() i SQL Server

  3. Rette "Konvertering mislykkedes ved konvertering af varchar-værdien" Når du prøver at sammenkæde i SQL Server

  4. Hvordan kan jeg lave en tabel i MySQL kaldet ordre?