oracle日期操作

2022-03-12 05:07:32 字數 4698 閱讀 7429

1,獲取某月最後一天

select to_char(last_day(to_date('20140125', 'yyyymmdd')), 'yyyymmdd') lastday

from dual

2,獲取上月末最後一天:

select to_char(add_months(last_day(to_date('2008-08-08','yyyy-mm-dd')),-1)

,'yyyy-mm-dd') lastday from dual;

3,獲取下月

select add_months(sysdate,1) from dual

select last_day(sysdate)+1 from dual

4,獲取上月同一天

select trunc(trunc(sysdate,'mm')-1,'mm')+to_char(sysdate,'dd')-1 from dual; 

select add_months(to_date('20140302', 'yyyymmdd'),- 1 ) from dual

5,獲取去年同一天

select  to_char(add_months(to_date('201404', 'yyyymm'), -12),

'yyyymm') from dual;

獲取上週日

select to_char(next_day(to_date('2014-02-10', 'yyyy-mm-dd'), '星期日') - 7, 'yyyymmdd')

from dual;

oracle獲取獲取週數 oracle 獲取周

select to_char(to_date('20141117','yyyymmdd'), 'ww') from dual;//ww使用oracle的週期演算法

select to_char(to_date('20141117','yyyymmdd'), 'iw') from dual;//iw使用標準週期演算法

6,持續sql

select to_date('2009-8', 'yyyy-mm') + rownum - 1

from dual

connect by rownum <

(select trunc(last_day(to_date('2009-8', 'yyyy-mm'))) -

trunc(add_months(last_day(to_date('2009-8', 'yyyy-mm')),

-1))

from dual)

7,年月日

select to_char(sysdate, 'yyyy"年"mm"月"dd"日"') from dual;

--select to_char(to_date('2014-02-16', 'yyyy-mm-dd')+(2-to_char(to_date('2014-02-16', 'yyyy-mm-dd'),'d'))-1,'yyyymmdd') from dual;

---- oracle 取上週一到週末的sql

-- 這樣取的是 在一周內第幾天,是以週日為開始的

selectto_char(to_date('20130906','yyyymmdd'),'d')

fromdual;

--結果:6 注釋:2013.09.06是周五,為本週的第六天

selectto_char(sysdate+(2

-to_char(sysdate,'d'))-

7,'yyyymmdd')

fromdual;---上週一 

selectto_char(sysdate+(2

-to_char(sysdate,'d'))-

1,'yyyymmdd')

fromdual;---上週日

-- 乙個更簡單的寫法 , 返回date型別

selecttrunc(sysdate,'iw')-7

fromdual;---上週一 

selecttrunc(sysdate,'iw')-1

fromdual;--上週日

-- 這樣查出來是本周一

selecttrunc(sysdate,'iw')

fromdual; 

selecttrunc(to_date('20130915','yyyymmdd'),'iw')

fromdual; 

-- 結果:2013/9/9  注釋:20130915 為週日

-- 返回char型別

selectto_char(trunc(sysdate,'iw')

-7,'yyyymmdd')

fromdual;--上週一

selectto_char(trunc(sysdate,'iw')

-1,'yyyymmdd')

fromdual;--上週日

-- 獲取上週一的函式

create

orreplace

functionfun_acc_getlastweekstart(systemdate

in

date)

return

varchar2

is

result_str

varchar2(15);

begin

selectto_char(trunc(systemdate,

'iw')-7,

'yyyymmdd')

intoresult_str

fromdual;

returnresult_str;

endfun_acc_getlastweekstart;

-- 獲取上週日的函式

create

orreplace

functionfun_acc_getlastweekend(systemdate

in

date)

return

varchar2

is

result_str

varchar2(15);

begin

selectto_char(trunc(systemdate,

'iw')-1,

'yyyymmdd')

intoresult_str

fromdual;

returnresult_str;

endfun_acc_getlastweekend;

-- 測試這個函式

selectfun_acc_getlastweekstart(sysdate)

fromdual; 

selectfun_acc_getlastweekend(sysdate)

fromdual; 

selectfun_acc_getlastweekstart(to_date('20130915','yyyymmdd'))

fromdual; 

selectfun_acc_getlastweekend(to_date('20130915','yyyymmdd'))

fromdual; 

--查詢結果:20130826、20130901、20130902、20130908 

-- 注:

selectsysdate

fromdual;      

--查詢結果:2013/9/6 9:45:14 

Oracle日期操作

今天星期幾 select to char sysdate,dy from dual select to char systimestamp,day from dual 今天是本週第幾天 select to char sysdate,d from dual select to char systime...

Oracle 日期操作

select trunc sysdate to char sysdate,d 7 2 from dual select trunc sysdate to char sysdate,d 1 from dual 列出上週星期一 星期天的時間 語句分析 sysdate 系統當前時間 to char sys...

oracle日期操作

sql select sysdate from dual 選擇系統時間 sysdate 12 7月 12 sql select add months sysdate,2 from dual add months用法,操作月份 add months sys 12 5月 12 sql select to...