国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

詳細講解"Oracle"數據庫的“周數計算”

2024-08-29 13:52:10
字體:
來源:轉載
供稿:網友
日期計算,算第n周的第一天及最后一天是幾號。 by keynes 2005.04.29

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

-- ww的算法為每年1月1日為第一周開始,date+6為每一周結尾

-- 例如20050101為第一周的第一天,而第一周的最后一天為20050101+6=20050107

-- 公式 每周第一天 :date + 周 * 7 - 7

-- 每周最后一天:date + 周 * 7 - 1

你會發現怎么編排格式都會跑掉。

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

--日期計算,算第n周的第一天及最后一天是幾號。 by keynes 2005.04.29

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

-- ww的算法為每年1月1日為第一周開始,date+6為每一周結尾

-- 例如20050101為第一周的第一天,而第一周的最后一天為20050101+6=20050107

-- 公式 每周第一天 :date + 周 * 7 - 7

-- 每周最后一天:date + 周 * 7 - 1

-- 如果以ww格式為主,第1、17周的起迄如下

127.0.0.1:asdb:WF>select to_date('20050101','yyyymmdd') + 1*7-7,to_date('20050101','yyyymmdd') + 1*7-1 from dual;

TO_DATE(' TO_DATE('

--------- ---------

01-JAN-05 07-JAN-05

127.0.0.1:asdb:WF>select to_date('20050101','yyyymmdd') + 17*7-7,to_date('20050101','yyyymmdd') + 17*7-1 from dual;

TO_DATE(' TO_DATE('

--------- ---------

23-APR-05 29-APR-05

Elapsed: 00:00:00.00

-- 驗證如下

127.0.0.1:asdb:WF>select to_char(to_date('20050422','yyyymmdd'),'ww') as weekn,to_char(to_date('20050423','yyyymmdd'),'ww') as week1,to_char(to_date('20050429','yyyymmdd'),'ww') as week2,to_char(to_date('20050430','yyyymmdd'),'ww') as weekn2 from dual;

WEEK WEEK WEEK WEEK

---- ---- ---- ----

16 17 17 18

Elapsed: 00:00:00.00

127.0.0.1:asdb:WF>

-- iw的算法為星期一至星期日算一周,且每年的第一個星期一為第一周,

-- 例如20050101為星期六,所以用iw的算法是前年的53周,而20050103之后才是第一周的開始。

-- 公式 每周第一天 :next_day(date) + 周 * 7 - 7

-- 每周最后一天:next_day(date) + 周 * 7 - 1

-- 如果以iw格式為主,第1、17周的起迄如下

127.0.0.1:asdb:WF>select next_day(to_date('20050101','yyyymmdd'),'MONDAY')+ 1 * 7 - 7 as first_day,next_day(to_date('20050101','yyyymmdd'),'MONDAY')+ 1 * 7 - 1 as last_day from dual;

FIRST_DAY LAST_DAY

--------- ---------

03-JAN-05 09-JAN-05

Elapsed: 00:00:00.00

127.0.0.1:asdb:WF>

127.0.0.1:asdb:WF>select next_day(to_date('20050101','yyyymmdd'),'MONDAY')+ 17 * 7 - 7 as first_day,next_day(to_date('20050101','yyyymmdd'),'MONDAY')+ 17 * 7 - 1 as last_day from dual;

FIRST_DAY LAST_DAY

--------- ---------

25-APR-05 01-MAY-05

Elapsed: 00:00:00.00

127.0.0.1:asdb:WF>

-- 驗證如下

127.0.0.1:asdb:WF>select to_char(to_date('20050424','yyyymmdd'),'iw') as weekn,to_char(to_date('20050425','yyyymmdd'),'iw') as week1,to_char(to_date('20050501','yyyymmdd'),'iw') as week2,to_char(to_date('20050502','yyyymmdd'),'iw') as weekn2 from dual;

WEEK WEEK WEEK WEEK

---- ---- ---- ----

16 17 17 18

Elapsed: 00:00:00.00

其它:

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

SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 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內解釋如下

IW = Week of year (1-52 or 1-53) based on the ISO standard

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 峨眉山市| 吕梁市| 林口县| 林州市| 延庆县| 美姑县| 蒙城县| 怀化市| 陕西省| 昌图县| 杨浦区| 三亚市| 北川| 营口市| 孟州市| 郧西县| 如皋市| 石楼县| 泾阳县| 汝城县| 循化| 会宁县| 望都县| 深水埗区| 秭归县| 灵宝市| 上林县| 神农架林区| 乌拉特前旗| 阿克陶县| 无锡市| 民丰县| 云阳县| 内丘县| 建昌县| 鄯善县| 芦山县| 游戏| 扶沟县| 汉阴县| 比如县|