【问题标题】:Data of previous quarters based on sysdate上季度数据基于 sysdate
【发布时间】:2019-05-13 12:52:11
【问题描述】:

我有以下要求。

假设我在 15-APR-2019 上运行查询,那么我应该得到 4th quarter 2018(01-OCT-18 to 31-DEC-18) 的数据。如果我在15-MAY-2019 上运行查询,我应该得到1st quarter of 2019(01-JAN-2019 to 31-MAR-2019) 的数据。

表示如果季度末数据和当前日期相差 30 天,那么我应该得到上一季度的数据。但如果相差不到 30 天,我应该得到上一季度的数据。

表示如果

I run on 15-APR-2019 data should be of (01-OCT-2018 to 31-DEC-2018)
I run on 01-APR-2019 data should be of (01-OCT-2018 to 31-DEC-2018)
I run on 01-MAY-2019 data should be of (01-JAN-2019 to 31-MAR-2019)
I run on 01-JUN-2019 data should be of (01-JAN-2019 to 31-MAR-2019)

我怎样才能把这个标准放在 where 子句中。我们必须根据sysdate 计算数据,并且必须按存储在数据库中的日期进行比较。

【问题讨论】:

  • 这是一个简单的问题,您只需要使用 CASE 语句即可。你在哪里遇到问题?请记住,这里唯一改变的部分是年份。
  • 我如何计算 30 天然后将“输出中的逻辑之间”并与 = 条件进行比较。你能帮我语法吗
  • 你的意思是 30 天,还是一个月?

标签: sql oracle plsql database-administration date-arithmetic


【解决方案1】:

类似这样的:

select trunc(sysdate - 30, 'Q') - interval '3' month

如果你想要完整的数据:

where date >= trunc(sysdate - 30, 'Q') - interval '3' month and
      date < trunc(sysdate - 30, 'Q')

【讨论】:

  • 嗨,戈登,我实际上可以根据几天前您之前的回答来计算日期和季度.....实际上我无法使用 case 将其放在 where 子句中。跨度>
【解决方案2】:
with s as
(select date '2019-04-15' dt from dual union all
 select date '2019-04-01' dt from dual union all
 select date '2019-05-01' dt from dual union all
 select date '2019-06-01' dt from dual
)
select dt, d1, add_months(d1, 3) - 1 d2
from
   (select dt, add_months(trunc(dt, 'q'), case when dt - trunc(dt, 'q') < 30 then -6 else -3 end) d1
    from s
   );

DT                  D1                  D2                 
------------------- ------------------- -------------------
2019-04-15 00:00:00 2018-10-01 00:00:00 2018-12-31 00:00:00
2019-04-01 00:00:00 2018-10-01 00:00:00 2018-12-31 00:00:00
2019-05-01 00:00:00 2019-01-01 00:00:00 2019-03-31 00:00:00
2019-06-01 00:00:00 2019-01-01 00:00:00 2019-03-31 00:00:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2014-07-03
    • 2020-07-16
    相关资源
    最近更新 更多