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

MySQL中EXTRACT(YEAR)提取dd/mm/yy格式日期年份错误求助

解决EXTRACT(YEAR)提取dd/mm/yy日期年份错误的问题

问题根源

你的数据库未按dd/mm/yy格式解析日期字符串23/01/22,错误识别为其他格式(如yy/mm/dd),导致年份被解析为2023而非2022。

针对不同数据库的解决方案

根据你使用的数据库类型,选择对应的方法先将字符串按指定格式转为日期,再提取年份:

  • MySQL/MariaDB
    使用STR_TO_DATE函数明确指定解析格式:

    EXTRACT(YEAR FROM STR_TO_DATE('23/01/22', '%d/%m/%y')) AS extracted_year
    

    说明:%d表示两位日期,%m表示两位月份,%y表示两位年份(自动映射为2000-2099区间的四位年份)。

  • PostgreSQL
    使用TO_DATE函数指定格式转换:

    EXTRACT(YEAR FROM TO_DATE('23/01/22', 'DD/MM/YY')) AS extracted_year
    

    说明:PostgreSQL中YY格式的两位年份默认规则为00-69对应2000-2069,70-99对应1970-1999,符合你的需求。

  • SQL Server
    使用CONVERT函数搭配样式码103(对应dd/mm/yy格式):

    EXTRACT(YEAR FROM CONVERT(DATE, '23/01/22', 103)) AS extracted_year
    

    若需避免无效日期解析报错,可改用TRY_CONVERT:

    EXTRACT(YEAR FROM TRY_CONVERT(DATE, '23/01/22', 103)) AS extracted_year
    

额外建议

如果是批量处理此类数据,建议在数据导入或存储阶段就按dd/mm/yy格式将字符串转为日期类型,避免每次查询重复转换,提升效率。

内容的提问来源于stack exchange,提问作者Carlos Alberto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:09:16