簡體   English   中英

將日期格式從 dd-MM-yyyy 轉換為 yyyy-mm-dd - 在 mysql

[英]Convert date format from dd-MM-yyyy to yyyy-mm-dd - in mysql

我的表中有一個名為date (VARCHAR Type)的列,其中包含這樣的日期

日期

12-Mar-2019

4-Feb-2021

5-May-2021 

我創建了一個名為 new_date (日期類型)的新列,我希望將列date中的日期轉換為如下所示 new_date

2019-03-12

2021-02-04

2021-05-05

mysql 語法

UPDATE `table`
SET new_date = CASE WHEN date REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'
                      THEN CAST(date AS DATE)
                      ELSE STR_TO_DATE(date, '%m-%d-%Y') END;
UPDATE test
SET new_date = CASE WHEN old_date REGEXP '\\d{4}-\\d{2}-\\d{2}'   -- test for YYYY-MM-DD
                    THEN old_date
                    WHEN old_date REGEXP '\\d{1,4}-\\w{3}-\\d{4}' -- test for DD-MMM-YYYY
                    THEN STR_TO_DATE(old_date, '%d-%b-%Y')
                    ELSE NULL                                     -- unknown format
                    END
WHERE new_date IS NULL     -- do not update existing values
;

小提琴


此 mysql 代碼僅支持 mysl 8.0 而不是 5.7 – user14812075

對於 5.7 - 使用 class 規范而不是\d\w標記:

UPDATE test
SET new_date = CASE WHEN old_date REGEXP '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}'
                    THEN old_date
                    WHEN old_date REGEXP '[[:digit:]]{1,4}-[[:alpha:]]{3}-[[:digit:]]{4}'
                    THEN STR_TO_DATE(old_date, '%d-%b-%Y')
                    ELSE NULL
                    END
WHERE new_date IS NULL;

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM