gpt4 book ai didi

sql - 如何从日期期间获取特定的工作日?

转载 作者:行者123 更新时间:2023-11-29 12:49:16 24 4
gpt4 key购买 nike

我正在尝试获取一个月或不同时间段内特定工作日的计数。

在我的例程中,我有 startDate 和 endDate,它们指示我试图找到工作日的时间段的开始和结束。

我知道如何计算从开始到结束的天数。

select
date_part('day',age('2010-04-10', '2010-04-05'));

给我一​​个输出:5

这给了我一天的名字:

to_char(current_date, 'day')

示例:“星期一”。

我有一个名为 RecurrentWeekDay 的变量(具有“星期一”、“星期二”等值),我想检查是否有与 RecurrentWeekDay 名称匹配的 weekDay(例如,如果 RecurrentWeekDay 是“星期一”,我需要检查 startDate 和 EndDate 之间是否有星期一)。

最佳答案

demo:db<>fiddle

您可以使用 generate_series() 生成两个边界之间的所有日期。之后您可以使用 to_char() 获取他们的工作日。使用 IN 比较器,您将获得预期的结果:

SELECT
id,
'Monday' IN (
SELECT to_char(generate_series(start_date, end_date, interval '1 day'), 'FMDay')
)
FROM
mydates

因为你的工作日总是包括在内,如果日期差异为 6 或以上,你可以优化以仅计算小于 6 的日期系列:

SELECT
id,
CASE WHEN end_date - start_date >= 6 THEN true
ELSE 'Monday' IN (
SELECT
to_char(
generate_series(start_date, end_date, interval '1 day'),
'FMDay'
)
)
END AS is_in
FROM
mydates

关于sql - 如何从日期期间获取特定的工作日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com