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;
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;
2条答案
按热度按时间zte4gxcn1#
使用Max()获取11月的最后一个星期五:
voj3qocg2#
基于Frank Heikens的答案(比我的第一个答案好得多,现已删除)和@Damien_the_Unbelieever的更正的黑色星期五定义