You need to enable JavaScript to run this app. PostgreSQL从给定日期提取无前置零月份的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL从给定日期提取无前置零月份的实现方法

PostgreSQL 提取日期对应无前置零月份的实现方案

此前尝试方案的问题说明

  • substr字符串截取方案:对'2020-03-01'执行substr('2020-03-01',6,2)得到的是带前导零的字符串类型值'03',既不是纯数值,也不符合无前置零的结果要求;且本质是字符串操作,没有日期合法性校验,如果输入的日期格式不是固定横杠分隔,截取位置会直接出错
  • 执行date_part、extract写法触发语法错误的常见原因:未对传入的字符串参数做显式日期类型转换、漏写固定语法关键字、标识符书写错误

最优实现方案

PostgreSQL 原生日期函数是该需求的最优解,相比字符串截取可靠性更高、性能更好,正确写法如下:

  1. EXTRACT 函数(官方推荐写法)
    对应代码:
    SELECT EXTRACT(MONTH FROM DATE '2020-02-03');
    
    返回结果:数值类型2,无前置零,完全匹配需求。

    注:如果是表中存储的date/timestamp类型字段,可直接传入字段名,不需要额外加DATE关键字做类型转换,例如:SELECT EXTRACT(MONTH FROM create_time) FROM order_table;

  2. date_part 函数(适配旧版本兼容场景)
    对应代码:
    SELECT date_part('month', DATE '2020-02-03');
    
    返回结果同为数值类型2。

之前语句报错的排查要点

  • 写EXTRACT语句时漏写FROM关键字,例如错误写法EXTRACT(MONTH '2020-01-01')
  • 传入字符串参数时未做显式日期类型转换,严格配置的实例会因类型不匹配触发语法报错
  • 关键字书写错误,例如将MONTH、FROM拼写错误,或是将date_part的第一个参数写为非合法的月份标识

内容的提问来源于stack exchange,提问作者erik-stengel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 19:06:07