PostgreSQL如何获取指定年份对应周数第一天的Unix时间戳
你可以通过to_date()函数指定周相关的格式模板来构造对应周的第一天日期,再转换为Unix时间戳,示例如下:
核心实现(ISO周标准,周一为一周第一天)
ISO周是业界最常用的周计数规则:每年第1周为包含当年第一个周四的周,每周第一天为周一,周数范围为1~53。
-- 获取1980年第3周第一天的Unix时间戳 EXTRACT(epoch FROM to_date('1980 3', 'IYYY IW')::timestamp)
格式模板说明:
IYYY:匹配ISO周对应的4位年份,可避免跨年周的计算偏差IW:ISO标准周数
自定义周规则调整
如果你的业务场景中周第一天为周日,可在上述基础上减1天即可:
-- 周第一天为周日时,1980年第3周第一天的Unix时间戳 EXTRACT(epoch FROM (to_date('1980 3', 'IYYY IW') - INTERVAL '1 day')::timestamp)
动态传参写法
如果年份和周数是字段值/动态变量,可通过字符串拼接构造入参:
EXTRACT(epoch FROM to_date(CONCAT(年份字段, ' ', 周数字段), 'IYYY IW')::timestamp)
内容的提问来源于stack exchange,提问作者sharkyenergy
相关产品推荐
相关产品推荐

