oracle獲得上個(gè)月的月份:
天寧網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
select to_char(add_months(trunc(sysdate),-1),'yyyymm') from dual;
oracle獲得下個(gè)月的月份:
select to_char(add_months(trunc(sysdate),1),'yyyymm') from dual;
oracle獲得上個(gè)月的第一天日期:
select data_dt ,ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1) ?from a_web_visit_origin;
oracle獲得上個(gè)月的第一天日期(符合當(dāng)?shù)氐娜掌诟袷剑?/p>
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1),'YYYY-MM-DD') ?from a_web_visit_origin;
oracle獲得上個(gè)月當(dāng)天日期:
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD') ),-1),'YYYY-MM-DD') ?from a_web_visit_origin;
select data_dt ,ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1) ?from a_web_visit_origin;
oracle獲得上個(gè)月的第一天日期(符合當(dāng)?shù)氐娜掌诟袷剑?/p>
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1),'YYYY-MM-DD') ?from a_web_visit_origin;
oracle獲得上個(gè)月當(dāng)天日期:
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD') ),-1),'YYYY-MM-DD') ?from a_web_visit_origin;
擴(kuò)展資料:
日期和字符轉(zhuǎn)換函數(shù)用法(to_date,to_char):
日期轉(zhuǎn)化為字符串:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;
獲取時(shí)間的年:? select to_char(sysdate,'yyyy') as nowYear?? from dual;
獲取時(shí)間的月:?select to_char(sysdate,'mm')??? as nowMonth from dual;
獲取時(shí)間的日:select to_char(sysdate,'dd')??? as nowDay??? from dual;
獲取時(shí)間的時(shí):select to_char(sysdate,'hh24') as nowHour?? from dual;
獲取時(shí)間的分:select to_char(sysdate,'mi')??? as nowMinute from dual;
獲取時(shí)間的秒:select to_char(sysdate,'ss')??? as nowSecond from dual;
需要看日期字段存儲(chǔ)的是字符還是日期類(lèi)型的數(shù)據(jù),方法略有不同
如果存儲(chǔ)的是字符型(如2015-09-01類(lèi)型的數(shù)據(jù))字段,可用以下語(yǔ)句:
select?*?from?表名?where?to_char(sysdate,'yyyy-mm')=substr(日期字段,1,7);
如果存儲(chǔ)的是日期型字段,可用以下語(yǔ)句:
select?*?from?表名?where?to_char(sysdate,'yyyy-mm')=to_char(日期字段,'yyyy-mm');
所用函數(shù)說(shuō)明:
to_char在語(yǔ)句中是將日期轉(zhuǎn)為字符的函數(shù),格式則為函數(shù)中設(shè)定的'yyyy-mm'格式。
sysdate代表當(dāng)前日期時(shí)間,是日期型數(shù)據(jù)。
substr是截取函數(shù),第一個(gè)參數(shù)為要截圖的字段,第二個(gè)參數(shù)為截取的起始位,第三個(gè)參數(shù)代表截取的長(zhǎng)度。
閑著無(wú)聊給你寫(xiě)了個(gè)函數(shù)
create function FN_TEST_DATE(i_time date)
return int as
v_int varchar2(10);
v_int1 varchar2(10);
v_int2 varchar2(10);
begin
v_int1:=7-to_char(TRUNC(i_time,'mm') ,'D')+1;
v_int2:=to_number(substr(to_char(i_time,'yyyymmdd'),7,2));
if v_int2=to_number(v_int1) then
v_int:=1;
elsif v_int2=v_int1+7 then
v_int:=2;
elsif v_int2=v_int1+14 then
v_int:=3;
elsif v_int2=v_int1+21 then
v_int:=4;
elsif v_int2=v_int1+28 then
v_int:=5;
else
v_int:=6;
end if;
return(v_int);
end;
--參數(shù)規(guī)范性就沒(méi)管了,統(tǒng)計(jì)一個(gè)月直接調(diào)用然后分組,統(tǒng)計(jì)多個(gè)月的,再按月份分組就行
select FN_TEST_DATE(sysdate) from dual --查看當(dāng)前時(shí)間是本月第幾周
1、查詢確定年月的數(shù)據(jù),使用to_date或to_char都可以實(shí)現(xiàn)
SELECT?*?FROM?表名
WHERE?TO_CHAR(日期列,'YYYY-MM')?=?TO_CHAR('2013-06','YYYY-MM')???或者
SELECT?*?FROM?表名
WHERE?日期列?=?TO_Date('2013-06','YYYY-MM')
2、查詢前一個(gè)月
select?concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1),?'-MM-'),'01?00:00:00')start_time,???
concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1),?'-MM-')||to_char(LAST_DAY(sysdate),'dd?'),'23:59:59')?end_time?????from?dual
3、查詢前一天
select?to_char(sysdate-1,'yyyy-mm-dd?')||'00:00:00'?start_time,to_char(sysdate-1,'yyyy-mm-dd?')||'23:59:59'?end_time??from?dual