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

如何在PostgreSQL中获取不受执行日期影响的上周周五日期

获取PostgreSQL中上周周五的通用方法

可以利用PostgreSQL的DATE_TRUNC('iso_week', ...)函数实现,该函数会返回当前日期所在ISO周的周一(ISO周固定以周一为一周起始,不受系统日期格式设置影响),再减去3天就能得到上一周的周五:

-- 返回带时间戳的上周周五
SELECT DATE_TRUNC('iso_week', CURRENT_DATE) - INTERVAL '3 days' AS last_week_friday;

-- 如果需要纯日期类型,可转换格式
SELECT (DATE_TRUNC('iso_week', CURRENT_DATE) - INTERVAL '3 days')::DATE AS last_week_friday;

逻辑验证

  • 若执行日为周一(2023-10-09):DATE_TRUNC返回本周一(2023-10-09),减3天得到上周周五(2023-10-06)
  • 若执行日为周五(2023-10-13):DATE_TRUNC返回本周一(2023-10-09),减3天得到上周周五(2023-10-06)
  • 若执行日为周日(2023-10-15):DATE_TRUNC返回本周一(2023-10-09),减3天得到上周周五(2023-10-06)
  • 若执行日为上周日(2023-10-08):DATE_TRUNC返回所属周的周一(2023-10-02),减3天得到上上周周五(2023-09-29),符合“上周周五”的定义(当前所在周的上一个完整周的周五)

另一种实现方式

也可以通过计算当前日期的星期数推导:

SELECT CURRENT_DATE - (EXTRACT(ISODOW FROM CURRENT_DATE) + 2)::INTEGER * INTERVAL '1 day' AS last_week_friday;

EXTRACT(ISODOW FROM ...)返回1(周一)到7(周日)的数值,通过数值+2得到需要往前推的天数,确保无论执行日是周几,都能定位到上一周的周五。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:00:19