1、oracle支持对日期进行运算
2、日期运算时是以天为单位进行的
3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可
4、进行时间进制转换时注意加括号,否则会出问题
trunc在时间运算中使用较多
select trunc(sysdate) from dual
oracle时间操作中1代表1天,可以转换成小时分等
trunc(sysdate)+1 当前时间+1天
trunc(sysdate)+1/24 当前时间加1/24天(一天24小时嘛),也就是1个小时
trunc(sysdate)+ 1 / (24*60) 把一天转化成24小时*60分钟,1/(24*60)也就是1分钟
那么你都会算了吧
,第一次看的时候真蛋疼。
1。上月末天:
SQL> selectto_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDayfrom
dual;
LASTDAY
----------
2005-05-31
2。上月今天
SQL> selectto_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday fromdual;
PRETODAY
----------
2005-05-21
3.上月首天
SQL> selectto_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDayfrom dual;
FIRSTDAY
----------
2005-05-01
4.按照每周进行统计
SQL> select to_char(sysdate,'ww') from dual group byto_char(sysdate,'ww');
TO
--
25
5。按照每月进行统计
SQL> select to_char(sysdate,'mm') from dual group byto_char(sysdate,'mm');
TO
--
06
6。按照每季度进行统计
SQL> select to_char(sysdate,'q') from dual group byto_char(sysdate,'q');
T
-
2
7。按照每年进行统计
SQL> select to_char(sysdate,'yyyy') from dual groupby to_char(sysdate,'yyyy');
TO_C
----
2005
8.要找到某月中所有周五的具体日期
select to_char(t.d,'YY-MM-DD') from (
select trunc(sysdate, 'MM')+rownum-1 as d
from dba_objects
where rownum < 32) t
where to_char(t.d, 'MM') = to_char(sysdate, 'MM')--找出当前月份的周五的日期
and trim(to_char(t.d, 'Day')) = '星期五'
--------
03-05-02
03-05-09
03-05-16
03-05-23
03-05-30
9.当前月之前的3个月
select add_months(last_day(sysdate)+1,-4),add_months(last_day(sysdate),-1) from dual