PostgreSQL:如何利用年份与月份字段生成日期列?
解决PostgreSQL中用year和month字段生成日期字段的问题
嘿,这个需求我经常碰到,给你几个简单好用的方法来实现:
方法一:使用make_date()函数(推荐,PostgreSQL 9.4+)
这个函数是PostgreSQL专门用来构造日期的,语法非常直观,直接传入年、月、日三个整数参数就行。因为你只有年和月,我们可以把日设为每月的第一天(这是合理的默认值,你也可以根据需求改成其他日期):
UPDATE test01 SET date_column = make_date(year, month, 1);
你可以先执行下面的查询验证结果是否正确,没问题再跑UPDATE:
SELECT year, month, make_date(year, month, 1) AS generated_date FROM test01 LIMIT 10;
方法二:使用to_date()函数(兼容旧版本)
如果你的PostgreSQL版本低于9.4,没有make_date(),可以用字符串拼接的方式,把年和月组合成符合格式的字符串,再转成日期:
-- 用concat拼接字符串 UPDATE test01 SET date_column = to_date(concat(year, '-', month), 'YYYY-MM'); -- 或者用format格式化,可读性更好 UPDATE test01 SET date_column = to_date(format('%s-%s', year, month), 'YYYY-MM');
后续操作(可选)
确认日期字段的值都正确生成后,如果你想删除原来的year和month字段,可以执行:
ALTER TABLE test01 DROP COLUMN year, DROP COLUMN month;
小提示:执行UPDATE前最好备份数据,或者先在测试环境验证,避免误操作哦~
内容的提问来源于stack exchange,提问作者Rutger Hofste
相关产品推荐
相关产品推荐

