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;
附注:
上文所提之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.
周日都是第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周的第一天及最后一天是几号。
1)ww的算法为每年1月1日为第一周开始,date+6为每一周结尾
例如20050101为第一周的第一天,而第一周的最后一天为20050101+6=20050107
公式 每周第一天 :date + 周 * 7 - 7
每周最后一天:date + 周 * 7 - 1
你会发现怎么编排格式都会跑掉。
2、日期计算,算第n周的第一天及最后一天是几号。 1)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>
2)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
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;
附注:
上文所提之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.
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-01是2009年第一周,是星期四,如果按你给的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
相关推荐
### Oracle日期查询相关知识点 #### 一、获取系统当前日期与时间 在Oracle数据库中,可以通过`SYSDATE`函数来获取系统的当前日期和时间。这是一个非常实用的功能,尤其是在需要记录数据的操作时间点时。 **示例:...
在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...
Oracle 日期及时间格式是 Oracle 编程语言中一个重要的组成部分,了解 Oracle 日期及时间格式可以帮助开发者更好地处理日期及时间相关的操作。在 Oracle 中,日期及时间格式可以通过使用 TO_CHAR 函数来实现,该函数...
Oracle 日期函数是 Oracle 数据库中的一组功能强大且广泛使用的函数,它们可以对日期进行各种操作和计算,本次练习涵盖了 Oracle 中常用的日期函数,包括获取当前系统时间、对日期的月进行加减、获取给定日期所在月...
oracle判断日期是否合法
以下是对给定文件中提及的Oracle日期处理函数的详细说明: 1. **add_months(d, n)**: 此函数将日期d加上n个月,返回新的日期。例如,`add_months(SYSDATE,1)`会返回当前日期往后一个月的日期。 2. **last_day(d)**...
Oracle数据库在日期处理方面提供了丰富的函数和操作方式,使得对日期和时间的管理变得非常灵活。以下是对标题和描述中提到的知识点的详细说明: 1. **日期和字符转换**: - `to_date` 函数用于将字符型数据转换为...
针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...
Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-...
### Oracle 日期操作详解 #### 一、日期时间间隔操作 在Oracle数据库中,我们可以方便地执行日期时间的间隔操作,比如对当前时间进行增减指定的时间间隔。 **1. 当前时间减去7分钟的时间** ```sql SELECT SYSDATE...
### Oracle日期型数据格式 在Oracle数据库中,日期型数据是一种非常重要的数据类型,用于存储日期和时间信息。为了确保数据的一致性和可读性,Oracle提供了多种方式来定义和处理日期格式。本文将深入探讨Oracle中的...
在开始之前,我们先来了解一些关于Oracle日期格式的基础知识: 1. **NLS_DATE_FORMAT**:这是一个非常重要的环境变量,用于控制日期在查询结果中的显示格式。 2. **日期格式字符串**:由一系列字符组成,用来定义...
### Oracle 验证是否是日期 在Oracle数据库中,经常需要对输入的数据进行格式校验,尤其是日期格式的校验尤为重要。本文将详细介绍一个自定义的Oracle函数`FN_ISDATE_JAVA`,该函数用于判断给定的字符串是否能够...
Oracle 中日期处理大全 在 Oracle 中,日期处理是数据库管理系统中一个非常重要的方面。处理日期信息需要精准和细致,否则可能会出现错误的结果。在本节中,我们将详细介绍 Oracle 中日期处理的各种方法和函数。 ...
Oracle 时间日期操作 Oracle 时间日期操作是 Oracle 数据库中的一种常用的操作类型,它可以对数据库中的日期和时间进行各种处理和计算。以下是 Oracle 时间日期操作的一些常见知识点: 1. 获取当前日期和时间:...
以下是对Oracle日期处理的一些关键知识点的详细说明: 1. **将时间字符串转换为时间** Oracle提供了`to_date()`函数将字符串转换为日期类型。这个函数需要两个参数:要转换的字符串和匹配的转换格式。例如,`to_...
ORACLE日期时间函数大全
### ORACLE常用日期函数...以上介绍的Oracle日期函数是数据库开发和管理中非常实用的一部分,通过灵活地运用这些函数,可以有效地解决各种与日期相关的数据处理问题。希望本文能够帮助读者更好地掌握和应用这些函数。
### Oracle中的日期处理总结 #### 一、获取当前日期与时间 在Oracle数据库中,我们可以通过多种方式来获取系统的当前日期或时间。...以上就是关于Oracle中日期处理的相关知识点总结,希望对你有所帮助。