oracle如何获取星期 oracle取星期几

oracle数据库今天星期几可以使用to_char函数获取星期 。
select to_char(sysdate, 'dy') from dual;
oracle to_char格式化函数用于把各种数据类型(日期/时间 , int , float,numeric)
转换成格式化的字符串 。
用于 date/time 转换的模板
HH一天的小时数 (01-12)
HH12一天的小时数 (01-12)
HH24一天的小时数 (00-23)
MI分钟 (00-59)
SS秒 (00-59)
SSSS午夜后的秒 (0-86399)
AM or A.M. or PM or P.M.正午标识(大写)
am or a.m. or pm or p.m.正午标识(小写)
Y,YYY带逗号的年(4 和更多位)
YYYY年(4和更多位)
YYY年的后三位
YY年的后两位
Y年的最后一位
BC or B.C. or AD or A.D.年标识(大写)
bc or b.c. or ad or 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;SUN=1)
W一个月里的周数
WW一年里的周数
CC世纪(2 位)
J Julian日期(自公元前4712年1月1日来的日期)
Q季度
RM罗马数字的月份(I-XII;I=JAN)-大写
rm罗马数字的月份(I-XII;I=JAN)-小写
oracle取得周数什么时候是oracle标准[Oracle] 日期处理
本篇是针对以上一篇中“获取日期的星期” 部分的展开 。
计算标准
Oracle 里支持两种标准的时间,一种是oracle 自身的标准, 另一种是ISO 的标准1.oralce 标准
1) 每年的 1 月1号作为这一年的第一天 。(不管这一天是星期几)比如:2013/01/01 是星期二,这一天作为2013年的第一天 。
2) 周数计算公式week = int(dayOfYear 6)/7; dayOfYear 是这一天是这一年的第几天3) 周数区间:1-53
2. ISO标准
1)每个星期总是从周一开始,周日结束
2)如果1月1日是周五、周六或周日,则这一周算为上一年的最后一周,因为这周的大部分时间属于上一年3)如果1月1日是周一、周二、周三或周四,则这一周算为新年的第一周,因为这周的大部分时间属于新的一年4)时间区间: 1-52 or 1-53
举例来说:对于1998和1999年的1月1日 , 1998年是算第一周,而1999年的1月1日却算为上一年的最后一周 。
Table 3-7 First ISO Week of the Year: Example 1, January 1998MoTuWeThFrSaSuISO Week
---12341 ISO week of 1998
5678910112 ISO week of 1998
121314151617183 ISO week of 1998
192021222324254 ISO week of 1998
262728293031-5 ISO week of 1998
Table 3-8 First ISO Week of the Year: Example 2, January 1999MoTuWeThFrSaSuISO Week
----12353ISO week of 1998
456789101 ISO week of 1999
111213141516172 ISO week of 1999
181920212223243 ISO week of 1999
252627282930314 ISO week of 1999
Oracle中获取年份
1.oralce 标准- YYYY
oralce 标准获取年份的方式很简单:
[sql] view plain copy 在CODE上查看代码片派生到我的代码片select TO_CHAR(TO_DATE('1997/01/01','YYYY/MM/DD'), 'YYYY') from dual;select TO_CHAR(TO_DATE('1997/12/31','YYYY/MM/DD'), 'YYYY') from dual;都是返回 1997
2. iso 标准 - IYYY
[sql] view plain copy 在CODE上查看代码片派生到我的代码片select TO_CHAR(TO_DATE('1997/01/01','YYYY/MM/DD'), 'IYYY') from dual;select TO_CHAR(TO_DATE('1997/12/31','YYYY/MM/DD'), 'IYYY') from dual;返回: 1997,1998
是不是很奇怪, 1997/12/31 号的年份是 1998 .
其实原因很简单,根据上面的标准,1998年1月1日是周四,则这一周算为新年的第一周 , 因为这周的大部分时间属于1998. 所以1997/12/31 也属于1998 年的第一周, 所以得到的是 1998.
你可能会想:
这是否因因为上面把字串转为日期的时候使用了YYYY这种格-- TO_DATE('1997/12/31','YYYY/MM/DD'),如果使用TO_DATE('1997/12/31','IYYY/MM/DD'), 'IYYY') 是否可以? 不幸的是,oracle 不支持这种用法 。
假设当天是1997/12/31,使用 TO_CHAR(sysdate,'IYYY'),发现同样获得的是 1998.
总结一下: 如果从string 转换为日期,如果只取这个日期的年份的话 , 最好使用 YYYY 。
Oracle 获取周数
要获取某一天是这一年的第几周,同样有两种标准的区别:
1.oracle 标准- WW
这种标准和算法看起来很傻瓜 。int(dayOfYear 6)/7[sql] view plain copy 在CODE上查看代码片派生到我的代码片select TO_CHAR(TO_DATE('1997/01/01','YYYY/MM/DD'), 'YYWW') from dual;select TO_CHAR(TO_DATE('1997/01/08','YYYY/MM/DD'), 'YYWW') from dual;select TO_CHAR(TO_DATE('1997/12/31','YYYY/MM/DD'), 'YYWW') from dual;很简单; 返回9701 ,9702,9753
不过这种标准在一般的公司使用的应该会比较少 。
2. iso 标准 - IW
[sql] view plain copy 在CODE上查看代码片派生到我的代码片select TO_CHAR(TO_DATE('1997/01/01','YYYY/MM/DD'), 'IYIW') from dual;select TO_CHAR(TO_DATE('1997/12/31','YYYY/MM/DD'), 'IYIW') from dual;返回:9701,9801
如上所述,1997/12/31 归到 1998 年的第一周 。
需要特别提醒的是:(本篇的精华)
年份 和 周数要使用同样的标准, 不要混着使用 , 比如 :YYIW-- oracle 的年份,ISO的周数IYWW
否则的话,会得到一些错误的结果 。
[sql] view plain copy 在CODE上查看代码片派生到我的代码片select TO_CHAR(TO_DATE('1997/12/31','YYYY/MM/DD'), 'YYIW') from dual;返回:9701
整整少了一年 。
而且这种错误在不跨年的状况上你可能还不会发现,一跨年,发现又回到了一年前 ^^
Oracle SQL 获取本月内的所有周一最近遇到业务需求,需要按周统计数据 。
思考再三想到可以使用每周周一来计算 。
故写出如下获得系统当前月份所有周一oracle如何获取星期的语句 。
select * from (
--转化成周一去重
select distinct trunc(t.day,'iw') as mon from (
--获取本月所有日期集合
SELECT trunc(sysdate, 'mm')LEVEL - 1 DAY
FROM DUAL
CONNECT BY trunc(sysdate, 'mm')LEVEL - 1 =
last_day(trunc(sysdate))
)t
)a
--移除非本月的周一
where trunc(a.mon, 'mm') =trunc(sysdate, 'mm')
ORDER BY MON
注oracle如何获取星期:
trunc(sysdate,'iw') 语句可以获取本周周一的日期 (date类型)
trunc(sysdate,'iw')1 可以获取本周周二的日期 。
以此类推
(可以把sysdate换成其它时间)
【oracle如何获取星期 oracle取星期几】关于oracle如何获取星期和oracle取星期几的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读