如何在 Postgres 中獲得黑色星期五日期?這將是 11 月的最后一個星期五,是否有可能以某種方式得到它?
uj5u.com熱心網友回復:
使用 MAX() 獲取 11 月的最后一個星期五:
SELECT MAX(d)::date AS black_friday
FROM generate_series('2000-01-01'::timestamp, '2051-01-01'::timestamp, INTERVAL '1 day') g(d)
WHERE EXTRACT(month from d) = 11 -- November
AND EXTRACT(dow FROM d) = 5 -- Friday
AND EXTRACT(DAY FROM d) BETWEEN 23 AND 29
GROUP BY
EXTRACT(year FROM d)
ORDER BY 1;
uj5u.com熱心網友回復:
以Frank Heikens的答案為基礎(比我的第一個答案好得多,現在已洗掉)以及來自@Damien_The_Unbeliever的更正黑色星期五定義
select ("November Thursdays" '1 day'::interval)::date as "Black Fridays"
from
( SELECT "date"::date "November Thursdays",
row_number() over (partition by EXTRACT(year FROM "date") order by "date")
FROM generate_series('2000-01-01'::date,
'2051-01-01'::date,
INTERVAL '1 day') dates("date")
WHERE EXTRACT(month from "date") = 11 -- November
AND EXTRACT(dow FROM "date") = 4 -- Thursday
ORDER BY 1) Thursdays
where row_number=4;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/366789.html
標籤:PostgreSQL的
