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

如何在Postgres中查询黑色星期五的具体日期

可以直接通过PostgreSQL内置的日期函数计算得到指定年份或历年的黑色星期五日期,无需预先存储日期数据,具体实现方法如下:

1 查询指定年份的黑色星期五

将SQL中的:target_year替换为你要查询的具体年份即可:

WITH nov_end AS (
    -- 生成目标年份11月的最后一天
    SELECT (date_trunc('year', make_date(:target_year, 1, 1)) + INTERVAL '11 months' - INTERVAL '1 day')::date AS dt
)
SELECT 
    dt - ( (EXTRACT(DOW FROM dt)::int + 2) % 7 ) AS black_friday
FROM nov_end;
2 批量查询历年的黑色星期五

如果需要查询多个年份的黑五日期,直接生成年份序列即可,以下示例查询2010年到2030年的所有黑五日期,年份范围可自行调整:

SELECT
    year,
    nov_end - ( (EXTRACT(DOW FROM nov_end)::int + 2) % 7 ) AS black_friday
FROM (
    -- 自定义年份查询范围
    SELECT generate_series(2010, 2030) AS year
) years
CROSS JOIN LATERAL (
    SELECT (date_trunc('year', make_date(year, 1, 1)) + INTERVAL '11 months' - INTERVAL '1 day')::date AS nov_end
) nov_dates
ORDER BY year;
  • 计算逻辑说明:我们先获取对应年份11月的最后一天,再根据该日期的星期偏移量,往前推到最近的周五,得到的结果就是当年11月最后一个周五,也就是黑色星期五,验证下来结果和实际黑五日期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:15:03