Oracle-将日期分成几个季度 [英] Oracle - break dates into quarters
本文介绍了Oracle-将日期分成几个季度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出2个日期(StartDate和EndDate),我该如何在Pl/SQL中生成季度周期.
Given 2 dates (StartDate and EndDate), how to do i generate quarterly periods in Pl/SQL.
示例:
Start Date: 01-JAN-2009
End Date: 31-DEC-2009
预期输出:
StartDate EndDate
01-JAN-2009 31-MAR-2009
01-APR-2009 30-JUN-2009
01-JUL-2009 30-SEP-2009
01-OCT-2009 31-DEC-2009
推荐答案
SELECT ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL-1) ) AS qstart
, ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1 AS qend
FROM ( SELECT TO_DATE('&start_date') AS start_date
, TO_DATE('&end_date') AS end_date
FROM DUAL
) PARAM
CONNECT BY ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1
<= PARAM.end_date
参数规则,您可能需要调整查询以适合您的目的:
Rules for params, you may need to adjust the query to suit your purposes:
- 如果start_date不是确切的季度开始日期,则它有效地使用季度包含开始日期.
- 如果end_date不是确切的季度末,那么我们将在end_date之前的那个季度结束(而不是包含结束日期的那个季度).
这篇关于Oracle-将日期分成几个季度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文