计算两个日期之间的特定日期计数
Posted
技术标签:
【中文标题】计算两个日期之间的特定日期计数【英文标题】:Calculate count of particular day fall in between two dates 【发布时间】:2019-06-14 08:09:19 【问题描述】:我需要一个 Amazon Redshift SQL 查询来计算两个日期之间的特定天数。 日期格式 - YYYY-MM-DD 例如 - 开始日期 = 2019-06-14,结束日期 = 2019-10-09,日期 - 每个月的第二天
现在,我想计算 2019-06-14 和 2019-10-09 之间的第 2 天下跌次数
因此,上述示例的实际结果应该是 4。因为 2nd-day 的 4 次将落在 2019-06-14 和 2019-10-09 之间。
我尝试了redshift的DATE_DIFF函数和months_between函数。但未能建立逻辑。由于无法理解数学或方程式应该是什么。
【问题讨论】:
如果开始日期 【参考方案1】:对我来说,您似乎想从日历表中进行选择。这样你就可以解决你的问题。您会注意到该查询看起来有点 hacky,因为 Redshift 不支持任何生成序列的函数,这让您必须自己创建序列表(参见 seq_10
和 seq_1000
)。一旦你有了一个序列,你就可以轻松地创建一个calendar
,其中包含你需要的所有信息(例如day_of_month
)。
这是回答您问题的查询:
WITH seq_10 as (
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1
), seq_1000 as (
select
row_number() over () - 1 as n
from
seq_10 a cross join
seq_10 b cross join
seq_10 c
), calendar as (
select '2018-01-01'::date + n as date,
extract(day from date) as day_of_month,
extract(dow from date) as day_of_week
from seq_1000
)
select count(*) from calendar
where day_of_month = 2
and date between '2019-06-14' and '2019-10-09'
【讨论】:
以上是关于计算两个日期之间的特定日期计数的主要内容,如果未能解决你的问题,请参考以下文章