SQL如何将带英文月份名的字符串日期转换为标准日期格式
SQL实现字符串日期格式转换方案
以下是主流数据库的实现方式,替换语句中的你的字段名、你的表名即可直接使用:
MySQL 实现
先通过STR_TO_DATE将字符串转成日期类型,再用DATE_FORMAT输出目标格式:
SELECT DATE_FORMAT(STR_TO_DATE(你的字段名, '%d-%b-%y'), '%d-%m-%Y') AS 格式化后日期 FROM 你的表名;
参数说明:%d匹配两位数日期,%b匹配英文缩写月份,%y匹配两位数年份,%Y输出四位数年份,%m输出两位数月份。如果业务存在19xx的两位数年份场景,需注意数据库默认的年份阈值:小于70的两位数年份默认识别为20xx,大于等于70的识别为19xx,不符合需求可自行调整阈值配置。
Oracle 实现
用TO_DATE转日期后再通过TO_CHAR格式化输出:
SELECT TO_CHAR(TO_DATE(你的字段名, 'DD-MON-RR'), 'DD-MM-YYYY') AS 格式化后日期 FROM 你的表名;
如果数据库是中文环境,英文月份识别会报错,可指定英文日期语言参数:
SELECT TO_CHAR(TO_DATE(你的字段名, 'DD-MON-RR', 'NLS_DATE_LANGUAGE = AMERICAN'), 'DD-MM-YYYY') AS 格式化后日期 FROM 你的表名;
SQL Server 实现
SQL Server 2012及以上版本可使用CONVERT+FORMAT组合实现:
SELECT FORMAT(CONVERT(DATE, 你的字段名, 6), 'dd-MM-yyyy') AS 格式化后日期 FROM 你的表名;
参数说明:转换格式值6对应dd mon yy的输入格式,可自动识别英文缩写月份。
PostgreSQL 实现
SELECT TO_CHAR(TO_DATE(你的字段名, 'DD-Mon-YY'), 'DD-MM-YYYY') AS 格式化后日期 FROM 你的表名;
中文环境下可指定英文解析规则:
SELECT TO_CHAR(TO_DATE(你的字段名, 'DD-Mon-YY', 'english'), 'DD-MM-YYYY') AS 格式化后日期 FROM 你的表名;
内容的提问来源于stack exchange,提问作者Newton8989
相关产品推荐
相关产品推荐

