当前位置: 首页 > 面试题库 >

Oracle-将日期分成几个季度

阎扬
2023-03-14
问题内容

给定2个日期(StartDate和EndDate),我该如何在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

参数规则,您可能需要调整查询以适合您的目的:

  • 如果start_date不是确切的季度开始日期,则它有效地使用季度包含开始日期。
  • 如果end_date不是确切的季度末,那么我们将在end_date之前的那个季度结束(而不是包含结束日期的那个季度)。


 类似资料:
  • 问题内容: 我想将日期范围划分为各个月份。 例如-我有一个以以下方式包含数据的视图: 我希望能够以这种方式显示以上数据: 有人可以帮我吗? 问题答案: 下面的查询应该可以解决问题。该(该条款)动态生成一些月份的数据,我们可以使用它来加入反对。

  • 本文向大家介绍Oracle Database 生成没有时间成分的日期,包括了Oracle Database 生成没有时间成分的日期的使用技巧和注意事项,需要的朋友参考一下 示例 所有DATE都有时间成分;但是,习惯上存储不需要将时间/分钟/秒设置为零(即午夜)的时间信息的日期。 使用ANSIDATE文字(使用ISO 8601日期格式): 使用以下命令将其从字符串文字转换为TO_DATE(): (有

  • 问题内容: 我想将日期时间序列转换为季节,例如第3、4、5个月,我想用2(春季)替换它们;对于6、7、8个月,我想用3(夏季)等替换它们。 所以,我有这个系列 这是我一直在尝试使用的代码,但无济于事。 和 两种解决方案均无效,特别是在第一个实现中,我收到一个错误: ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all() 而第二个是有错误的大列表。有什么想法吗?谢谢

  • 将给出今天的日期 1月、4月、7月、10月=1 2月、5月、8月、11月=2 3月、6月、9月、12月=3 应该打印。例如:12月是季度的第三个月,所以答案是3。对此有更好的解决方案吗?

  • 本文向大家介绍Oracle Database 使用时间分量生成日期,包括了Oracle Database 使用时间分量生成日期的使用技巧和注意事项,需要的朋友参考一下 示例 使用以下命令将其从字符串文字转换为TO_DATE(): 或使用TIMESTAMP文字: 当将Oracle存储在表的列中时,Oracle会将其隐式TIMESTAMP转换为a。但是,您可以将值显式指定为:DATEDATECAST(

  • 我在Oracle 11g数据库中有一个这样的表 我想知道在给定的时间段内有多少张卡进行了充值,但我希望这些信息按日期分组。如果一张卡的id已经在一个日期计算过,则不应在下一个日期计算(不同)。 这里有一些测试数据 当我像这样执行查询时,总计数为4,这是正确的。 后果 但是,当我尝试这种方法时,我的总数是10。这是因为,当我在某个日期使用“分组依据”并在ID中使用“不同”时,这种区别只适用于分组日期