Heim > Datenbank > MySQL-Tutorial > Oracle对2位年份的处理

Oracle对2位年份的处理

WBOY
Freigeben: 2016-06-07 15:13:09
Original
1134 Leute haben es durchsucht

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 虽然Oracle数据存储了4位的年份,但是如果只提供2位数字,Oracle就会根据使用的格式是YY还是RR来解释世纪。 YY格式 如果日期中的年份采用的格式为YY,并且只提供了2位年份,那么就认为这一年世纪与数

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    虽然Oracle数据存储了4位的年份,但是如果只提供2位数字,Oracle就会根据使用的格式是YY还是RR来解释世纪。

    YY格式

    如果日期中的年份采用的格式为YY,并且只提供了2位年份,那么就认为这一年世纪与数据库服务器上当前设置的世纪相同。因此,指定年份的前两位数字与前年份的前两位数据字相同。例如,如果提供的年份是14,而当前年份是2010年,那么提供的年份就是2014年,同理,如果提供年份是75,那么就是2075年。

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

    下面来看一个查询,它在处理年份14和75时使用YY格式,在下面这个查询中,注意向TO_DATE函数输入的年份是14的75,其输出又被传递给TO_CHAR函数。后者又将日期转换成DD-MM-YY格式的字符串。

    SQL> select to_char(to_date('04-05-14', 'dd-mm-yy'), 'dd-mm-yyyy'),

    2          to_char(to_date('04-05-75', 'dd-mm-yy'), 'dd-mm-yyyy')

    3    from dual

    4 ;

    TO_CHAR(TO_DATE('04-05-14','DD TO_CHAR(TO_DATE('04-05-75','DD

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

    04-05-2014                                                                       04-05-2075

    RR格式

    如果日期中年份采用的格式为RR,并且只提供了最后2位年份,那么年份中的前两位数字就由两部共同决定。提供年份的两位数字(指定年),数据库服务器上当前日期中年份的后2位数字(当年)。确定世纪的规则如下:

    1:

    如果指定年份在00-49之间,并且当前年份在00-49之间,那么指定年世纪就和当前年份世纪相同。如果指定01,当前是2010,那么指定年就为:2015

    2:

    如果指定年份在50-99之间,并且当前年份在00-49之间,那么指定年份世纪就等于当前年份的世纪减去1。如果指定是11,当前是2010,那么指定年就为:1911。

    3:

    如果指定年份在00-49之间,并且当前年份在50-49之间,那么指定年的世纪就是等于当前世纪加1。如果指定是为11,而当前年份是2055年,那么指定年就是2111年。

    4:

    如果指定年分在50-99之间,并且当前年在50-99之间,那么指定年的世纪就和当前年世纪相同。如果指定为51而当前年为2076年,那么指定年就2051年。

    SQL> select to_char(to_date('04-05-14', 'dd-mm-rr'), 'dd-mm-yyyy'),

    2           to_char(to_date('04-05-75', 'dd-mm-rr'), 'dd-mm-yyyy')

    3    from dual

    4 ;

    TO_CHAR(TO_DATE('04-05-14','DD TO_CHAR(TO_DATE('04-05-75','DD

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

    04-05-2014                     04-05-1975

    select to_date('10-DEC-10 12:56:00','YYYY-MM-dd hh24:mi:ss','nls_date_language=American') from dual;

    select to_char(to_date('10-DEC-10 12:56:00', 'dd-mm-rr hh24:mi:ss','nls_date_language=American'), 'yyyy-mm-dd hh24:mi:ss') from dual;

Oracle对2位年份的处理

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage