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

PostgreSQL中能否用date_part从datetime提取年和月?

解决方案

当然可以同时提取年份和月份,这里提供几种实用的方法:

方法1:用to_char直接格式化(最简洁)

PostgreSQL的to_char函数可以直接将datetime类型转换为指定格式的字符串,一步到位:

select to_char(
  (select min(t1.val) from tval t1 where t1.fid = 3771),
  'YYYY-MM'
) as year_month;

执行后会返回2019-11,其中YYYY表示四位年份,MM表示两位月份(自动补零,比如1月会显示为01)。

方法2:用date_part分别提取后拼接

如果你想手动控制拼接逻辑,可以分别提取年和月再组合:

select 
  concat(
    date_part('year', min_val),
    '-',
    lpad(date_part('month', min_val)::text, 2, '0')
  ) as year_month
from (
  select min(t1.val) as min_val from tval t1 where t1.fid = 3771
) sub_query;
  • date_part分别提取年和月,月份转为文本后用lpad补零确保是两位
  • concat将年、分隔符-、补零后的月份拼接成目标字符串

方法3:提取为独立的年份/月份列

如果需要分开的两列(年份和月份各一列),可以这样写:

select
  date_part('year', min_val) as year,
  date_part('month', min_val) as month
from (
  select min(t1.val) as min_val from tval t1 where t1.fid = 3771
) sub_query;

返回结果会是两列:year列值为2019,month列值为11。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:25:42