![](/img/trans.png)
[英]Date format conversion `dd-mm-yyyy` to `yyyy-mm-dd` from in mysql procedure
[英]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.