sql >> Databáze >  >> RDS >> Mysql

Převeďte řetězec/varchar na datum mezi tabulkami MySQL

Podívejte se na STR_TO_DATE funkce:

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

A pak stejný dotaz s formátem data jako '%m/%d/%Y' a poté znovu pomocí '%M %D, %Y' .Pokud se formát neshoduje, STR_TO_DATE vrátí NULL a řádky nebudou aktualizovány.

Pokud si přejete vložit svá stávající data do nové tabulky, můžete použít něco takového:

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 je sloupec s datem a poté můžete formátovat, jak chcete, pomocí PHP nebo pomocí DATE_FORMAT)



  1. Vyrovnává se MySQL Connector/J řádky při streamování ResultSet?

  2. Definováno omezení ODLOŽIT PŮVODNĚ OKAMŽITĚ je stále ODLOŽENO?

  3. SqlBulkCopy ze seznamu<>

  4. Android SQlite neaktualizuje data