[英]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');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.