查找一组日期之间的季度结束日期 - Oracle SQL
Find Quarter End Date between a set of Date - Oracle SQL
我想看看是否可以在包含来自 table 的日期的字段中过滤掉季度结束日期列表。
下面是我用于获取一系列日期的代码,但我如何修改它以仅获取季度结束日期? 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)
我在想:
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
我想看看是否可以在包含来自 table 的日期的字段中过滤掉季度结束日期列表。
下面是我用于获取一系列日期的代码,但我如何修改它以仅获取季度结束日期? 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)
我在想:
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