【问题标题】:Find Quarter End Date between a set of Date - Oracle SQL在一组日期之间查找季度结束日期 - Oracle SQL
【发布时间】:2021-03-03 07:40:44
【问题描述】:

我正在寻找是否可以在包含表格日期的字段中过滤掉季度结束日期列表。

下面是我获取一系列日期的代码,但我如何修改它以仅获取季度结束日期? 2017 年的示例 - 我希望它显示 2017-03-31,2017-06-31,2017-09-31,2017-12-31

谢谢。

a.activity_date Between To_Date('2017-01-01', 'YYYY-MM-DD') and To_Date(Trunc(SysDate, 'Q') - 1)

【问题讨论】:

    标签: sql oracle date where-clause date-arithmetic


    【解决方案1】:

    我在想:

    where activity_date >= date '2017-01-01' 
      and activity_date <  trunc(sysdate, 'q')
      and activity_date = trunc(activity_date, 'q') + interval '3' month - interval '1' day
    

    前两个谓词是原始查询的修改版本(使用日期文字,而不是在 date 上使用 to_date())。作为第三个谓词的右操作数的表达式计算当前日期的季度结束:逻辑是截断它所属季度的开始日期,加上 3 个月,然后减去一天。我们可以使用该值进行过滤。

    我们也可以使用定制的 Oracle 日期算法来表达这一点:

    where activity_date >= date '2017-01-01' 
      and activity_date <  trunc(sysdate, 'q')
      and activity_date = add_months(trunc(activity_date, 'q'), 3) - 1
    

    【讨论】:

    • 谢谢,很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多