Oracle获取一周前,一个月前,一年前, 本周,本月,当年的日期

1、获取当前时间一周前的日期

select  sysdate - interval '' day  from dual 

类似的

 --当前时间减去7分钟的时间
select sysdate,sysdate - interval '' MINUTE from dual
--当前时间减去7小时的时间
select sysdate - interval '' hour from dual
--当前时间减去7天的时间
select sysdate - interval '' day from dual
--当前时间减去7月的时间
select sysdate,sysdate - interval '' month from dual
--当前时间减去7年的时间
select sysdate,sysdate - interval '' year from dual
--时间间隔乘以一个数字
select sysdate,sysdate - 8 *interval '' hour from dual

2、获取当前时间一个月前的日期

select add_months(sysdate,-1) from dual 

3、获取当前时间一年前的日期

select add_months(sysdate,-12) from dual 

4.获取本周

select * from 表 where time > sysdate - (to_char(sysdate-1,'D'));

5.获取本月

select * from 表 where time>=TRUNC(SYSDATE, 'MM') and time<=last_day(SYSDATE);

6. 获取当年时间的数据

 Select * From 表 Where To_Char(Time,'yyyy')=To_Char(Sysdate,'yyyy');
或者
Select * From 表 Where Time >= trunc(Sysdate,'yyyy');

例子:

 --当前时间的最近一个月
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date >= Add_Months(Sysdate,-1);
--当前时间的一个月前
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date < Add_Months(Sysdate,-1);
--获取当前时间一年前的日期
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date < Add_Months(Sysdate,-12);
--获取当前时间近一周
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date >Sysdate - Interval '' Day;
--本周
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date >Sysdate - (To_Char(Sysdate-1,'D')) Order By Create_Date Asc;
--本月
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where create_date >=TRUNC(SYSDATE, 'MM') and Create_Date <=last_day(SYSDATE) Order By Create_Date Asc;
--当年
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where To_Char(Create_Date,'yyyy') = To_Char(Sysdate,'yyyy');
--当年
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date >= trunc(Sysdate,'yyyy');

说明:

1. 当前时间减去7月的时间 sysdate - interval '7' month  的实现方式 和 当前时间的7月 Add_Months(Sysdate,-7) 实现结果是一样的
 --当前时间的近7月的时间数据
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date >(Sysdate - Interval '' Month) order by Create_Date asc ;
--当前时间的近7月的时间数据
Select To_Char(Create_Date,'yyyy-MM-dd HH:mm:ss') From Order Where Create_Date >= Add_Months(Sysdate,-7) order by Create_Date asc;

2. 外国都是以周日作为每周的第一天,所以在调用Sysdate - To_Char(Sysdate-1,'D') 计算本周时,要大于这个时间,不能是包括

select sysdate 当前时间 , sysdate - interval '' day 当前时间近一周 ,Sysdate - To_Char(Sysdate-1,'D') 本周 from dual;

  运行结果为:

 Oracle获取一周前,一个月前,一年前, 本周,本月,当年的日期

上一篇:启动程序的同时传参给接收程序(XE8+WIN764)


下一篇:简单的优化处理 By LINQ TO SQL