You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL Workbench中将varchar类型转换为日期类型?

解决varchar日期(YY.DD.MM格式)转日期类型的问题

针对你遇到的Publish_Date列(varchar类型,格式为YY.DD.MM,如17.01.11)转日期类型的问题,以下是不同数据库的可行方案:

SQL Server 解决方案

  1. 使用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;
    
  2. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:20:41