簡體   English   中英

我想每月生成一個報告

[英]I want to generate a report monthly

-查詢-

select count(*)
    from TOKEN
    where CODE = xxx
      and createdDatetime >=trunc(sysdate);

- 結果 -

Count(*)
72

目前,我正在使用一個監視工具,該工具每天自動運行並獲得一整天的總數。 現在,我想運行一個查詢,該查詢將自動計算整個月的數據,而無需每月更改查詢。

您使用的條件:

and createdDatetime >= trunc(sysdate);

返回今天的數據,因為TRUNC應用於SYSDATE ,給出“今天非常重要的時刻”。

但是,如果您稍稍調整一下並將SYSDATE截斷為一個月,則會得到當前月份的第一天,例如

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> select
  2    trunc(sysdate) today,
  3    trunc(sysdate, 'mm') this_month
  4  from dual;

TODAY               THIS_MONTH
------------------- -------------------
23.07.2018 00:00:00 01.07.2018 00:00:00

SQL>

所以你最后會用

and createdDatetime >= trunc(sysdate, 'mm')

通過說“整個月”來取決於您的喜好;

從一個月前開始過去的時間:

 select count(1)
   from TOKEN
  where CODE = 'xxx'
    and months_between(trunc(sysdate),createdDatetime)<=1;

從本月初開始:

 select count(1)
   from TOKEN
  where CODE = 'xxx'
    and to_char(createdDatetime,'yyyymm') = to_char(trunc(sysdate),'yyyymm');

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM