计算两个日期之间的特定日期计数

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_10seq_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'

【讨论】:

以上是关于计算两个日期之间的特定日期计数的主要内容,如果未能解决你的问题,请参考以下文章

(Java / Android) 计算两个日期之间的天数并以特定格式呈现结果

计算两个特定日期之间有多少个星期五(或任何一个)?

如何计算 SQL 中两个特定日期之间的最长周期?

在两个日期之间计数

在 Swift 中计算两个日期之间的差异

显示当前日期和两个特定日期之间天数的 SQL 查询