`
touchmm
  • 浏览: 1030246 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

oracle对2位年份的处理

 
阅读更多

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if !mso]> <object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui> </object> <style> st1/:*{behavior:url(#ieooui) } </style> <![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} table.MsoTableGrid {mso-style-name:网格型; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-border-insideh:.5pt solid windowtext; mso-border-insidev:.5pt solid windowtext; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

Oracle 数据库中存储4 位的年份,但是当你只提供2 位数字的年份,那么oracle 就会根据你所使用的YY 还是RR 格式来解释实际,如果提供了完整的年份,那是最好的。

1.RR 格式:

指定年的2 位数字

00-49

50-99

当年的后

两位数字

00-49

规则1: 指定年的前两位数字就等于当年的前两位数字

规则2: 指定年的前两位数字就等于当年的前两位数字减去1

50-99

规则3: 指定年的前两位数字就等于当年的前两位数字加上1

规则4: 指定年的前两位数字就等于当年的前两位数字

我们来看看下面这个查询:

SQL> select

2 to_char(sysdate,'dd-mm-yyyy') date_1,

3 to_char(to_date('09-03-11','dd-mm-rr'),'dd-mm-yyyy') date_2,

4 to_char(to_date('09-03-50','dd-mm-rr'),'dd-mm-yyyy') date_3

5 from dual;

DATE_1 DATE_2 DATE_3

---------- ---------- ----------

09-03-2011 09-03-2011 09-03-1950

当前的日期为201139

DATE_2 验证了上面的规则1 :我提供的rr(11) 与当前的系统日期的年份2011 的最后两位数字1100-49 这个范围。

DATE_3 验证了上面的规则2 :我提供的rr(50) 所在的范围(50-99) 大于当前系统年份2011 的最后两位数字11 所在的范围(00-49) ,所以将20-1=19 ,再组合到一起就得到了1950, 这才是指定年份的年。

如果我们要验证规则3 和规则4 ,那么就得更改操作系统时间。

XP 系统中,我们想要修改系统时间的话,可以按照下面的方法来进行。

1 、双击任务栏右下角的时间,打开“日期和时间属性”对话窗口。

2 、在时间和日期选项卡中,在日期和时间栏里修改我们需要的日期及时间。

3 、确定退出后,我们可以看到日期和时间已经是我们想要的结果了。

修改会话的时间格式:

SQL> alter session set nls_date_format='yyyy-mm-dd';

Session altered

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH2

------------------------------

2087-03-09 16:27:29

下面验证规则3 和规则4

SQL> select

2 to_char(sysdate,'dd-mm-yyyy') date_1,

3 to_char(to_date('09-03-11','dd-mm-rr'),'dd-mm-yyyy') date_2,

4 to_char(to_date('09-03-50','dd-mm-rr'),'dd-mm-yyyy') date_3

5 from dual;

DATE_1 DATE_2 DATE_3

---------- ---------- ----------

09-03-2087 09-03-2111 09-03-2050

规则3 :指定的年份是11 年,其所在的范围(00-49) 小于与当前系统年份2087 的年份最后两位数字不在范围(50-99) ,所以当前年份的前两位数字20+1=21 才是指定年份的具体日期:211139 日。

规则4 :同规则1 ,我们得到了DATE_3 的值:09-03-2050

注意:如果日期中的年份使用RRRR 格式,但是只提供了2 位的年份,那么oracle 数据库就会使用RR 格式来解释日期。

2.YY 格式

在使用YY 格式时,如果只提供年份的后两位,那么此年份的前两位与当前系统年份的前两位相同。

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered

SQL> select

2 to_char(sysdate) date_1,

3 to_char(to_date('09-03-11','dd-mm-yy'),'dd-mm-yyyy') date_2,

4 to_char(to_date('09-03-50','dd-mm-yy'),'dd-mm-yyyy') date_3

5 from dual;

DATE_1 DATE_2 DATE_3

------------------- ---------- ----------

2087-03-09 16:49:02 09-03-2011 09-03-2050

注意:如果日期中的年份使用了YYYY 格式,但是只提供了2 位的年份,那么oracle 数据库就会使用YY 格式来解释日期。

分享到:
评论

相关推荐

    oracle sql 根据年份、周数取日期

    在Oracle SQL中,根据年份和周数获取特定日期是一个常见的需求,特别是在处理时间序列数据或进行周期性分析时。本文将深入探讨如何利用Oracle SQL的功能来实现这一目标,包括理解Oracle中的日期函数、如何计算特定...

    在oracle中处理日期大全

    Oracle 中日期处理大全 在 Oracle 中,日期处理是数据库管理系统中一个非常重要的方面。处理日期信息需要精准和细致,否则可能会出现错误的结果。在本节中,我们将详细介绍 Oracle 中日期处理的各种方法和函数。 ...

    Oracle中的日期处理总结

    在Oracle中,经常需要对日期进行格式化处理,常见的操作包括将日期转换为字符串以及将字符串转换为日期。 1. **`TO_CHAR(date, '格式')`**:该函数用于将日期类型转换成指定格式的字符串。例如: ```sql SELECT...

    Oracle中日期格式字段处理[归类].pdf

    这里,`yyyy`代表四位数的年份,`mm`代表两位数的月份,`dd`代表两位数的日期,`hh24`代表24小时制的小时,`mi`代表分钟,`ss`代表秒。 2. `TO_CHAR`函数则用于将日期转换为字符串。例如,获取当前日期和时间的...

    Oracle日期和时间的存储与处理

    Oracle 日期和时间的存储与处理 Oracle 日期和时间的存储与处理是 Oracle Database 11g SQL 开发指南中的重要章节。本章节主要介绍了处理并存储一个特定的日期和时间,包括使用 DATE 类型存储日期和时间、使用...

    oracle exdate2 Lab Materials

    Oracle Exdate是Oracle数据库系统中一个重要的日期时间处理功能,主要涉及在数据库操作中对日期进行复杂的计算和比较。在Oracle认证中,Exdate部分是一个关键的考察点,因此理解和熟练掌握这一知识点对于数据库管理...

    oracle自定义日期函数

    Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-...

    oracle日期查询相关

    - `YYYY`: 年份,四位数字表示。 - `MM`: 月份,两位数字表示。 - `DD`: 日期,两位数字表示。 - `DAY`: 星期几,全名表示。 - `D`: 星期几,数字表示,范围是1(周日)到7(周六)。 - `WW`: 第几周,一年中的第几...

    Oracle中日期格式字段处理.docx

    Oracle 中的日期格式字段处理是指在 Oracle 数据库中对日期和时间的格式化、转换和计算。下面是 Oracle 中日期格式字段处理的知识点总结: 1. 日期格式字符串:在 Oracle 中,日期格式字符串是用来指定日期和时间的...

    向oracle中插入日期

    在处理Oracle数据库中的日期类型数据时,经常会遇到需要将字符串转换为日期格式的情况。Oracle提供了一个非常强大的函数`to_date()`来实现这一功能。本文将详细介绍`to_date()`函数的基本用法以及一些需要注意的细节...

    oracle行转列

    Oracle数据库作为全球广泛使用的数据库管理系统之一,提供了丰富的功能来处理复杂的数据操作。"Oracle行转列"是数据库查询中常见的一种需求,尤其是在数据分析和报表展示时。这个主题涉及到Oracle数据库中的聚合函数...

    oracle时间函数处理总结大全

    本文将根据给定的内容对Oracle中常用的时间函数进行详细介绍,并提供具体的使用示例。 #### 1. `Sysdate` `Sysdate`函数返回当前系统的日期和时间。 ```sql SQL&gt; Select sysdate from dual; ``` 输出结果: ``` ...

    oracle日期及时间格式

    常见的格式符号包括 YYYY、MM、DD、HH24、MI、SS 等,其中 YYYY 表示四位年份,MM 表示月份,DD 表示日,HH24 表示 24 小时制的小时,MI 表示分钟,SS 表示秒。 在 Oracle 中,可以使用不同的日期及时间格式,例如 ...

    oracle中 substring函数的使用

    在Oracle数据库中,`SUBSTR`函数是一个非常重要的字符串处理函数,用于从指定的字符串中提取子串。该函数在实际应用中极为广泛,能够帮助用户灵活地处理数据,满足各种业务需求。下面将详细介绍`SUBSTR`函数的语法、...

    Oracle中实现datadiff函数

    这是因为Oracle中的日期函数通常接受日期类型作为输入参数,而实际应用中可能需要处理的是字符串格式的日期数据。 ##### CDate 函数 ``` CREATE OR REPLACE FUNCTION CDate (dateChar IN VARCHAR2) RETURN DATE IS...

    oracle查询截至到当前日期月份所在年份的所有月份

    `trunc`函数在Oracle中是非常重要的日期处理函数,它可以用于对日期进行不同级别的截断,例如: - `trunc(sysdate)`:返回当前日期,不包含时间部分。 - `trunc(sysdate, 'mm')`:返回当月的第一天。 - `trunc...

    设置ORACLE时间格式

    - Oracle支持多种格式模型,如`YYYY`表示四位年份,`MM`表示两位月份,`DD`表示两位日期,`HH24`表示24小时制小时,`MI`表示分钟,`SS`表示秒。还有其他如`MI AM/PM`、`SS.FF`(毫秒)等。 6. **时间区域和NLS_...

    oracle 定时导出脚本

    #### 二、处理带时间的文件名技巧 在上述脚本中,关键的一点是如何生成包含当前时间戳的文件名。具体实现方法如下: ```bash fmt=`date "+%Y-%m-%d[%H%M%S]"` ``` - `date "+%Y-%m-%d[%H%M%S]"`:这一命令使用`+`...

    Pro Oracle SQL (2010)

    这五位作者均在Oracle领域拥有丰富的实践经验,并且是该领域的专家级人物。本书旨在帮助读者深入理解并掌握Oracle SQL的强大功能。 #### 二、核心概念与技术要点 ##### 1. Oracle SQL 概述 Oracle SQL 是 Oracle ...

Global site tag (gtag.js) - Google Analytics