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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

oracle解析儒略日,利用to_char获取当前日期准确的周数!

發布時間:2023/11/29 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle解析儒略日,利用to_char获取当前日期准确的周数! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總的來說周數的算法有兩種:

算法一:iw算法,每周為星期一到星期日算一周,且每年的第一個星期一為第一周,就拿2014年來說,2014-01-01是星期三,但還是算為今年的第一周,可以簡單的用sql函數獲取當前的周數:

PgSQL

SQL> SELECT to_char(SYSDATE, 'iw'),sysdate from dual;

TO SYSDATE

-- ---------

02 07-JAN-14

1

2

3

4

5

SQL>SELECTto_char(SYSDATE,'iw'),sysdatefromdual;

TOSYSDATE

-- ---------

0207-JAN-14

可以看到2014-01-07是第二周,但是有一個地方需要注意,按照這樣的算法,一年中要么是52周,或者53周,如果一年當中的第52周之后至當年的12月31日之前,還有大于或等于4天的話,那這幾天就定為當年的第53周,如果不足4天,就將剩余的這些天數歸為下一年的第一周,就拿今年舉例,2013年30日和31日落單,不足4天,所以2013年只有52周,這2天定位2014年的第一周。

此外還有一個地方需要注意,比如2014-01-01是周三,2014年的第一個周一是2014-01-06,結果是第一個周一已經算是第二周了,這樣程序處理起來可能比較麻煩,后面我們將會說明怎么處理。

算法二:ww算法,每年的1月1日作為當年的第一周的第一天,不管當年的1月1日是星期幾,用sql表達就是

PgSQL

SQL> SELECT to_char(SYSDATE, 'ww'),sysdate from dual;

TO SYSDATE

-- ---------

01 07-JAN-14

1

2

3

4

5

SQL>SELECTto_char(SYSDATE,'ww'),sysdatefromdual;

TOSYSDATE

-- ---------

0107-JAN-14

可以看到這兩種算法得出來的結果不一致,這種算法可能第一周和最后一周不足7天。但是算法簡單。

通過如上兩種算法,就可以得到日期的周數。

PgSQL

SQL> SELECT to_char(to_date('20140107', 'YYYY-MM-DD'),'iw') from dual;

TO

--

02

1

2

3

4

5

SQL>SELECTto_char(to_date('20140107','YYYY-MM-DD'),'iw')fromdual;

TO

--

02

另外附上用于日期和時間的Format:

FORMAT 描述

HH 一天的小時數 (01-12)

HH12 一天的小時數 (01-12)

HH24 一天的小時數 (00-23)

MI 分鐘 (00-59)

SS 秒 (00-59)

MS 毫秒 (000-999)

US 微秒 (000000-999999)

SSSS 午夜后的秒 (0-86399)

AM 或 A.M. 或 PM 或 P.M. 正午標識(大寫)

am 或 a.m. 或 pm 或 p.m. 正午標識(小寫)

Y,YYY 帶逗號的年(4 和更多位)

YYYY 年(4和更多位)

YYY 年的后三位

YY 年的后兩位

Y 年的最后一位

IYYY ISO 年(4位或更多位)

IYY ISO 年的最后 3 位

IY ISO 年的最后 2 位

I ISO 年的最后一位

BC 或 B.C. 或 AD 或 A.D. 紀元標識(大寫)

bc 或 b.c. 或 ad 或 a.d. 紀元標識(小寫)

MONTH 全長大寫月份名(空白填充為9字符)

Month 全長混合大小寫月份名(空白填充為9字符)

month 全長小寫月份名(空白填充為9字符)

MON 大寫縮寫月份名(3字符)

Mon 縮寫混合大小寫月份名(3字符)

mon 小寫縮寫月份名(3字符)

MM 月份號(01-12)

DAY 全長大寫日期名(空白填充為9字符)

Day 全長混合大小寫日期名(空白填充為9字符)

day 全長小寫日期名(空白填充為9字符)

DY 縮寫大寫日期名(3字符)

Dy 縮寫混合大小寫日期名(3字符)

dy 縮寫小寫日期名(3字符)

DDD 一年里的日子(001-366)

DD 一個月里的日子(01-31)

D 一周里的日子(1-7;周日是1)

W 一個月里的周數(1-5)(第一周從該月第一天開始)

WW 一年里的周數(1-53)(第一周從該年的第一天開始)

IW ISO 一年里的周數(第一個星期四在第一周里)

CC 世紀(2 位)

J 儒略日(自公元前4712年1月1日來的天數)

Q 季度

RM 羅馬數字的月份(I-XII;I=JAN)(大寫)

rm 羅馬數字的月份(I-XII;I=JAN)(小寫)

TZ 時區名 (大寫)

tz 時區名 (小寫)

轉載請注明: 版權所有,文章允許轉載,但必須以鏈接方式注明源地址,否則追究法律責任!

最后編輯:2014-01-08作者:Jerry

一個積極向上的小青年,熱衷于分享--Focus on DB,BI,ETL

總結

以上是生活随笔為你收集整理的oracle解析儒略日,利用to_char获取当前日期准确的周数!的全部內容,希望文章能夠幫你解決所遇到的問題。

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