2013-05-10 66 views
-1

我说得对在Oracle中思考,如果我是做一个更新/插入到具有以下时间戳列...甲骨文时间戳更新/插入一年解释

UPDATE tblBlah set TimeStampColumn = to_timestamp('01-01-99 12:00 AM', 'MM/DD/YY HH:MI AM') 

甲骨文将解释一年作为已经发生的1999年,而不是未来2099年?

+2

那岂不是更容易尝试,而不是问这里? 'SELECT to_timestamp('01 -01-99 12:00 AM','MM/DD/YY HH:MI AM')FROM DUAL' – GolezTrol 2013-05-10 15:01:36

+0

[oracle的'yy'和'rr'日期掩码有什么区别?] (http://stackoverflow.com/questions/19058/what-is-the-difference-between-oracles-yy-and-rr-date-mask) – 2013-05-10 15:02:06

回答

4

YY将取最后两位数字并覆盖当年的数字。

select to_timestamp('01-01-99 12:00 AM', 'MM/DD/YY HH:MI AM') from dual 
--> 
January, 01 2099 00:00:00+0000 

使用RR代替:

select to_timestamp('01-01-99 12:00 AM', 'MM/DD/RR HH:MI AM') from dual 
--> 
January, 01 1999 00:00:00+0000 

RR将:

鉴于每年有2个位数,返回了一年,下个世纪,如果 年是< 50,当前年份的最后两位数字大于等于50;一年 回报在上一世纪如果年份> = 50,本年度的 最后两位数字是50 <

Example at SQL Fiddle.