真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么判斷周幾 oracle判斷日期大于多少時(shí)間

如何從oracle中查到每個(gè)月中有幾周,每周的日期段從幾號(hào)到幾號(hào)?

有幾周,把每個(gè)月的最后一天拼成串傳到如下SQL:

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的萬(wàn)柏林網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

select to_char(to_date('20111031','yyyymmdd'),'w') from dual;

每周日期段沒(méi)找到直接的,可以自己寫(xiě)個(gè)函數(shù):

1、獲取1號(hào)是周幾,如周4;

2、則1-4號(hào)為第一周,即1號(hào)+(7-4)天=4號(hào);

3、循環(huán):4+1=5號(hào)——4+7=11號(hào)為第二周;

直到:某周加完后的日期,大于該月的最大天數(shù),則取該月最大天數(shù)收尾,循環(huán)結(jié)束;

第二種方法是你建個(gè)存日期的表:

date week

……

20110101

20110102

……

里面存N年的日期,然后根據(jù)

select to_char(to_date('20111031','yyyymmdd'),'w') from dual; 把week字段update進(jìn)去;

然后直接根據(jù)這張表寫(xiě)SQL就直接獲取幾周,每周是幾號(hào)到幾號(hào)了。。。

在oracle中,怎么去得到當(dāng)前的日期時(shí)間是周幾

to_char(日期,'D')

比如:

select to_char(sysdate,'D') from dual;

其中周日是1,周一是2 。。。 以此類推

在oracle中怎么計(jì)算當(dāng)天是本月的第幾周?

這個(gè)算法的結(jié)果依賴于當(dāng)前系統(tǒng)時(shí)間是什么時(shí)候…假設(shè)按照你說(shuō)的,當(dāng)前系統(tǒng)時(shí)間是星期六,那么它計(jì)算的結(jié)果就是說(shuō)這個(gè)星期六是本月的第幾個(gè)星期六。就拿12月來(lái)說(shuō),12月1日是星期六哦,所以你在12月1號(hào)查的時(shí)候它結(jié)果會(huì)是1哦,但是12月2日的時(shí)候,你查周日,它的結(jié)果仍然是1哦,因?yàn)槭潜驹碌谝淮纬霈F(xiàn)的星期日哦!只有當(dāng)你查12月8日的時(shí)候,才開(kāi)始出現(xiàn)結(jié)果2哦…其實(shí)你可以在系統(tǒng)里選一些特殊的時(shí)間查一下就可以發(fā)現(xiàn)規(guī)律

oracle周數(shù)計(jì)算

oracle周數(shù)計(jì)算

===========================================================

作者: keyneslin()

發(fā)表于: :

分類: ORACLE

出處:

================================================

日期計(jì)算 算第n周的第一天及最后一天是幾號(hào) ? by keynes

================================================

ww的算法為每年 月 日為第一周開(kāi)始 date+ 為每一周結(jié)尾

例如 為第一周的第一天 而第一周的最后一天為 + =

公式 每周第一天? date + 周 *

每周最后一天 date + 周 *

不管怎么編排格式都會(huì)跑掉 真氣人 ~~

=========================================================================

日期計(jì)算 算第n周的第一天及最后一天是幾號(hào) ? by keynes

=========================================================================

ww的算法為每年 月 日為第一周開(kāi)始 date+ 為每一周結(jié)尾

例如 為第一周的第一天 而第一周的最后一天為 + =

公式 每周第一天? date + 周 *

每周最后一天 date + 周 *

如果以ww格式為主 第 周的起迄如下

:asdb:WFselect to_date( yyyymmdd ) + * to_date( yyyymmdd ) + * from dual;

TO_DATE( TO_DATE(

JAN JAN

:asdb:WFselect to_date( yyyymmdd ) + * to_date( yyyymmdd ) + * from dual;

TO_DATE( TO_DATE(

APR APR

Elapsed: : :

驗(yàn)證如下

:asdb:WFselect to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual;

WEEK WEEK WEEK WEEK

??

Elapsed: : :

:asdb:WF

iw的算法為星期一至星期日算一周 且每年的第一個(gè)星期一為第一周

例如 為星期六 所以用iw的算法是前年的 周 而 之后才是第一周的開(kāi)始

公式 每周第一天? next_day(date) + 周 *

每周最后一天 next_day(date) + 周 *

如果以iw格式為主 第 周的起迄如下

:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )+ * as first_day next_day(to_date( yyyymmdd ) MONDAY )+ * as last_day from dual;

FIRST_DAY LAST_DAY

JAN JAN

Elapsed: : :

:asdb:WF

:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )+ * as first_day next_day(to_date( yyyymmdd ) MONDAY )+ * as last_day from dual;

FIRST_DAY LAST_DAY

APR MAY

Elapsed: : :

:asdb:WF

驗(yàn)證如下

:asdb:WFselect to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual;

WEEK WEEK WEEK WEEK

??

Elapsed: : :

其它

== 查今天是 本月 的第幾周

SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW ) + AS weekOfMon from dual;

SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual;

== 查今天是 今年 的第幾周

select to_char(sysdate ww ) from dual;

select to_char(sysdate iw ) from dual;

附注

上文所提之iw及ww格式在doc內(nèi)解釋如下

IW = Week of year ( or ) based on the ISO standard

WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year

參考文件

Format Models

oracle周數(shù)計(jì)算(續(xù))

===========================================================

作者: keyneslin()

發(fā)表于: :

分類: ORACLE

出處:

本篇是接續(xù)前一篇 因有朋友(allenc)要計(jì)算oracle的周數(shù)日期起迄

所以測(cè)試了一下

測(cè)試結(jié)果如下

特殊周數(shù)計(jì)算

星期日到星期六為一周(與ww及iw算法不同)

例 年的第一周起迄是同一天 是

例 年的第一周起為 迄為

計(jì)算第一周的天數(shù)

create or replace function fdf(p_date in date) return number

is

begin

檢查是否傳入要計(jì)算那一年的一月一日

if to_char(to_char(p_date ddd )) then

return null;

end if;

如果第一周的第一天剛好也是最后一天時(shí) 傳回

if to_char(p_date d ) then

return (next_day(p_date SATURDAY ) p_date + );

else

return ;

end if;

exception

when others then

dbms_output put_line(sqlerrm);

end;

計(jì)算公式

起??????????? decode(周 計(jì)算當(dāng)年的一月一日 計(jì)算當(dāng)年的一月一日 + (fdf(計(jì)算當(dāng)年的一月一日) + (周 )* )) as 起

迄(第一種算法) decode(周 to_date(to_char(計(jì)算當(dāng)年的一月一日 yyyy )|| || yyyymmdd ) 計(jì)算當(dāng)年的一月一日 + (fdf(計(jì)算當(dāng)年的一月一日) + (周 )* )) as 迄

迄(第二種算法) decode(周 last_day(trunc(計(jì)算當(dāng)年的一月一日 mm )+ ) 計(jì)算當(dāng)年的一月一日 + (fdf(計(jì)算當(dāng)年的一月一日) + (周 )* )) as 迄

上面的參數(shù)部份 計(jì)算當(dāng)年的一月一日 為date type 周 為number type

傳回值一律是date型態(tài)

例如

年第 周

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

年第 周

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

年第 周

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

年第 周

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

年第 周

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

年第 周

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

年第 周方法

select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( last_day(trunc(to_date( yyyymmdd ) mm )+ ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

結(jié)果如下

:asdb:WF 年第 周

:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

S_WEEK??? E_WEEK

JAN JAN

Elapsed: : :

:asdb:WF 年第 周

:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

S_WEEK??? E_WEEK

JAN JAN

Elapsed: : :

:asdb:WF 年第 周

:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

S_WEEK??? E_WEEK

DEC DEC

Elapsed: : :

:asdb:WF

:asdb:WF 年第 周

:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

S_WEEK??? E_WEEK

JAN JAN

Elapsed: : :

:asdb:WF 年第 周

:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

S_WEEK??? E_WEEK

JAN JAN

Elapsed: : :

:asdb:WF 年第 周

:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;

S_WEEK??? E_WEEK

DEC DEC

Elapsed: : :

lishixinzhi/Article/program/Oracle/201311/18269

ORACLE中怎么判斷某一周的開(kāi)始和結(jié)束日期?

PROCEDURE getWeekly( p_date IN DATE, -- 月份所在日期

p_number IN NUMBER, -- 第幾周

p_startDATE OUT DATE , --該周開(kāi)始日期

p_endDATE OUT DATE ) --該周結(jié)束日期

AS

v_lastDay DATE;

v_firstDay DATE;

BEGIN

v_lastDay := LAST_DAY(p_date);

v_firstDay := ADD_MONTHS(v_lastDay, -1) + 1;

p_startDate := ROUND(v_firstDay + 7*(p_number-1)-1, 'DAY');

p_endDate := p_startDate + 6;

END getWeekly;

ORACLE SQL 求判斷每天屬于第幾周的函數(shù)

給分吧,沒(méi)啥說(shuō)的。

select v_date_month,v_date_min,v_date_max,v_count /*該周在本月中的天數(shù)*/,

rownum - min(rownum) over(partition by v_date_month) + 1 v_zhou_seq /*本月中的第幾周*/

from (

select to_char(v_date, 'yyyymm') v_date_month,

min(v_date) v_date_min,

max(v_date) v_date_max,

count(1) v_count

from (

--使用開(kāi)窗函數(shù)對(duì)2010年全年周進(jìn)行先后順序的排序

select min(s_rownum) over(partition by rn) rn, a.v_date

from (select rownum s_rownum, to_char(v_date, 'iw') rn, v_date /*, v_date + 7*/ /*, v_zhou*/

from (

--取到2010年全年對(duì)應(yīng)的星期幾

select to_date('2010' || '0101', 'yyyymmdd') + rownum - 1 v_date,

to_char(to_date('2010' || '0101', 'yyyymmdd') + rownum - 1, 'day') v_zhou

from (

--取2010年的天數(shù),并排序

select rownum

from dual

connect by rownum = to_date('2010' || '1231', 'yyyymmdd') -

to_date('2010' || '0101', 'yyyymmdd') + 1

)

)

order by v_date) a

order by v_date

)

group by to_char(v_date, 'yyyymm'), rn

order by rn

);


標(biāo)題名稱:oracle怎么判斷周幾 oracle判斷日期大于多少時(shí)間
本文路徑:http://weahome.cn/article/hpghco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部