国产探花免费观看_亚洲丰满少妇自慰呻吟_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.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陕西省| 卫辉市| 吕梁市| 双流县| 洪江市| 望城县| 贵定县| 民权县| 五寨县| 崇阳县| 朝阳县| 鸡泽县| 绩溪县| 丰都县| 秦安县| 公主岭市| 兴义市| 海晏县| 沁水县| 新宾| 贵阳市| 留坝县| 白银市| 湟源县| 江阴市| 蒙自县| 麻城市| 垣曲县| 阿尔山市| 南投市| 尚志市| 黄骅市| 松滋市| 类乌齐县| 新安县| 厦门市| 忻州市| 福州市| 渑池县| 拜泉县| 筠连县|