1. 程式人生 > >Oracle時間的獲取,前一天,前一星期,前一月

Oracle時間的獲取,前一天,前一星期,前一月

–前一天的開始時刻 

SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyy-mm-dd’) || ‘00:00:00’,’yyyy-mm-dd hh24:mi:ss’) FROM DUAL;

–前一天的最後時刻 

SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyy-mm-dd’) || ‘23:59:59’,’yyyy-mm-dd hh24:mi:ss’) FROM DUAL;

–上個月第一天的最後時刻 

select to_date(to_char(add_months(trunc(sysdate),-1),’yyyy-mm’) || ‘01 23:59:59’,’yyyy-mm-dd hh24:mi:ss’)from dual;

–上個月的第一天 
SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyymm’) || ‘01’,’yyyy-mm-dd’) FROM DUAL;

–上個月第一天最開始的時刻 
select to_date(to_char(add_months(trunc(sysdate),-1),’yyyy-mm’) || ‘01 00:00:00’,’yyyy-mm-dd hh24:mi:ss’) from dual;

–上個月最後一天 
select to_char(last_day(add_months(sysdate,-1)),’yyyy-mm-dd’) from dual;

–上個月最後一天的時刻 
select to_date(to_char(last_day(add_months(sysdate,-1)),’yyyy-mm-dd’) || ’ 23:59:59’,’yyyy-mm-dd hh24:mi:ss’) from dual;

另外還有一些獲取星期的方法:
select to_char(sysdate,’d’) 每週第幾天 , 
to_char(sysdate,’dd’) 每月第幾天 , 
to_char(sysdate,’ddd’) 每年第幾天 , 
to_char(sysdate,’ww’) 每年第幾周 , 
to_char(sysdate,’mm’) 每年第幾月 , 
to_char(sysdate,’q’) 每年第幾季 , 
to_char(sysdate,’yyyy’) 年 
from dual;

select to_char(sysdate,’YYYY”年”mm”月”dd”日”’) from dual;

select to_char(sysdate,’YYYY/mm/dd hh24:mi:ss ssss’) from dual;


獲取指定月的最開始時間和最後的時間: 
SELECT to_date(to_char(I_QUERY_DATE ||’01 00:00:00’),’yyyy-mm-dd hh24:mi:ss’) FROM dual;

select to_date(to_char(last_day(t.d)|| ’ 23:59:59’),’yyyy-mm-dd hh24:mi:ss’) from (select to_date(‘2015-05’,’yyyy-mm’) d from dual)t

通過月份獲取01年到50年之間全部分月份和月初月末的日期:
select to_char(tt.d, ‘yyyy-MM’) interval_month, 
to_char(tt.d, ‘MM’) month, 
to_char(last_day(tt.d), ‘dd’) day, 
tt.d interval_date, 
last_day(tt.d) last_day 
from (select ADD_MONTHS(zz.s, rownum - 1) d 
from (select to_date(‘2001-01-01’, ‘yyyy-MM-dd’) s, 
to_date(‘2050-01-01’, ‘yyyy-MM-dd’) e 
from dual) zz, 
(select * from user_objects) 
where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt