日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle日期相关

發布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle日期相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Oracle中日期的表示:

select?to_char(sysdate,'CC?WW?W?D?DDD?YYYY/MM/DD?year?month?day')?FROM?DUAL
其中
CC????為世紀
WW?為一年中的周
W??????為一個月中的周
D???????為星期幾
DDD?為一年中的第幾天
year???為年?
month?為月?
day??????為星期幾

SQL>???select?to_char(sysdate,'day')?from?dual;?

IW,WW的區別

IW:ISO標準周
WW:oracle標準周
舉例:
SELECT?to_char(to_date('20051203','yyyymmdd'),'WW')?"WW03",
???????to_char(to_date('20051203','yyyymmdd'),'IW')?"IW03",
???????to_char(to_date('20051204','yyyymmdd'),'WW')?"WW04",
???????to_char(to_date('20051204','yyyymmdd'),'IW')?"WW04",
???????to_char(to_date('20051205','yyyymmdd'),'WW')?"WW05",
???????to_char(to_date('20051205','yyyymmdd'),'IW')?"WW05"
FROM?dual;?

Oracle中發現的WW和IW的規律
WW:
?????每年的1月1日作為當年的第一周的第一天(不管當年的1月1日是星期幾);
?????比如:2004/01/01?是周四,?在Oracle中被定義為2004年WW的第一周的第一天;
?????SELECT?TO_CHAR(TO_DATE('20040101','YYYYMMDD'),'YY:WW'),TO_CHAR(TO_DATE('20040107','YYYYMMDD'),'YY:WW'),TO_CHAR(TO_DATE('20040108','YYYYMMDD'),'YY:WW')?FROM?DUAL;

IW?:
????以周別為“主線”?,每年最多可以有53個周B別,但是每年至少要包含52個周別;
如果一年當中第52周別之后至當年的12月31日之間,還有大于或等于4天的話,則定為當年的第53周,否則剩余這些天數被歸為下一年的第1周;如果在不足52周別的話,則以下一年的時間來補;每周固定的從周一開始作為本周的第1天,到周日作為本周的第7天;比如:在Oracle中?2006/01/01?依然屬于IW周別?05年的第52周的第7天
SELECT?TO_CHAR(TO_DATE('20051226','YYYYMMDD'),'IY:IW'),TO_CHAR(TO_DATE('20060101','YYYYMMDD'),'IY:IW')?FROM?DUAL;

?

關于Oracle?to_char()函數中的IW,WW?周別顯示?

===========================================================?

作者:?tolywang(http://tolywang.itpub.net)
發表于:2008.03.24?09:49
分類:?Oracle數據庫管理?
出處:http://tolywang.itpub.net/post/48/458073
---------------------------------------------------------------?

查今天是?"今年"?的第幾周?

  select?to_char(sysdate,'ww')?from?dual;?

  或?

  select?to_char(sysdate,'iw')?from?dual;?

  附注:?

上文所提之iwww格式在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.?

?

周日都是第12

select?to_char(to_date('20080323','yyyymmdd'),'WW')?from?dual;

select?to_char(to_date('20080323','yyyymmdd'),'IW')?from?dual;?

周一其中一個是?12?周,一個是第?13?周?。?按照中國習慣應該式?IW?(ISO?Standard?Week?)?比較合適?。?

select?to_char(to_date('20080324','yyyymmdd'),'WW')?from?dual;

select?to_char(to_date('20080324','yyyymmdd'),'IW')?from?dual;?

tolywang?發表于:2008.03.24?09:49?::分類:?(?Oracle數據庫管理?)?::閱讀:(2468)?::?評論?(2)?::?引用?(0)?

re:?關于Oracle?to_char()函數中的IW,WW?周別顯示?[回復]?

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

1、日期計算,算第n周的第一天及最后一天是幾號。?

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

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

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

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

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

  2、日期計算,算第n周的第一天及最后一天是幾號。?1ww的算法為每年11日為第一周開始,date+6為每一周結尾?

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

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

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

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

  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>?

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

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

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

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

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

  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?

  3)其它:?

  A、查今天是?"本月"?的第幾周?

  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;?

  B、查今天是?"今年"?的第幾周?

  select?to_char(sysdate,'ww')?from?dual;?

  或?

  select?to_char(sysdate,'iw')?from?dual;?

  附注:?

  上文所提之iwww格式在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.

tolywang?評論于:2008.03.24?10:02?

re:?關于Oracle?to_char()函數中的IW,WW?周別顯示?[回復]?

SQL>?select?to_char(to_date('2009-01-01','yyyy-MM-dd'),'iw')?from?dual;

TO_CHAR(TO_DATE('2009-01-01','
------------------------------
01
2009-01-012009年第一周,是星期四,如果按你給的IW?計算一周第一天,和最后一天來計算本年的第二周的第一天和最后一天,就相差一周
SQL>?select?to_char(next_day(to_date('2009-01-01','yyyy-MM-dd'),'星期一')+2*7-7,'yyyy-MM-dd')?as?firstDay,to_char(next_day(to_date('2009-01-01','yyyy-MM-dd'),'星期一')+2*7-1,'yyyy-MM-dd')?as?lastDay?from?dual;

FIRSTDAY?LASTDAY
----------?----------
2009-01-12?2009-01-18

SQL>?select?to_char(to_date('2009-01-12','yyyy-MM-dd'),'iw')?from?dual;

TO_CHAR(TO_DATE('2009-01-12','
------------------------------
03


隨便介紹幾個其它函數的用法:?
如獲得完整的時間格式?
select?to_char(sysdate,'yyyy-mm-dd?hh24:mi:ss')?from?dual;

本月的天數?
SELECT?to_char(last_day(SYSDATE),'dd')?days?FROM?dual?
今年的天數?
select?add_months(trunc(sysdate,'year'),?12)?-?trunc(sysdate,'year')?from?dual?
下個星期一的日期?
SELECT?Next_day(SYSDATE,'monday')?FROM?dual

轉載于:https://my.oschina.net/HuifengWang/blog/233010

總結

以上是生活随笔為你收集整理的Oracle日期相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。