如何在MySQL Workbench中将varchar类型转换为日期类型?
解决varchar日期(YY.DD.MM格式)转日期类型的问题
针对你遇到的Publish_Date列(varchar类型,格式为YY.DD.MM,如17.01.11)转日期类型的问题,以下是不同数据库的可行方案:
SQL Server 解决方案
使用TRY_CONVERT(推荐,兼容脏数据)
该函数会尝试转换,无效数据返回NULL而非报错,避免整列变NULL:SELECT TRY_CONVERT(DATE, Publish_Date, 3) AS Converted_Date FROM your_table;这里
style=3对应DD/MM/YY,SQL Server会自动识别.分隔符;如果需要更精准,可先替换分隔符再转换:SELECT TRY_CONVERT(DATE, REPLACE(Publish_Date, '.', '/'), 3) AS Converted_Date FROM your_table;使用PARSE函数
明确指定日期格式规则:SELECT PARSE(Publish_Date AS DATE USING 'en-GB') AS Converted_Date FROM your_table;en-GB对应日/月/年格式,匹配你的DD.MM.YY结构,两位年份会自动补全为20xx年。
MySQL 解决方案
使用STR_TO_DATE函数,指定对应格式符:
SELECT STR_TO_DATE(Publish_Date, '%y.%d.%m') AS Converted_Date FROM your_table;
%y:匹配两位年份(如17对应2017)%d:匹配两位日期%m:匹配两位月份
PostgreSQL 解决方案
使用TO_DATE函数,匹配你的日期格式:
SELECT TO_DATE(Publish_Date, 'YY.DD.MM') AS Converted_Date FROM your_table;
常见失败原因说明
- 格式/style码错误:比如SQL Server中误用了对应
MM/DD/YY的style码,导致日和月颠倒,无法识别有效日期返回NULL。 - 未处理脏数据:列中存在不符合
YY.DD.MM格式的数据时,普通CONVERT/CAST会报错或整列返回NULL,用TRY_CONVERT(SQL Server)、STR_TO_DATE(MySQL仅对无效数据返回NULL)可规避。 - 分隔符不匹配:部分函数对分隔符敏感,替换为函数默认识别的
/或-能提升转换成功率。
内容的提问来源于stack exchange,提问作者Ness_ness_sh
相关产品推荐
相关产品推荐

