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
相关产品推荐
相关产品推荐

