-1

如果我要使用以下内容对 TimeStamp 列进行更新/插入,我在 Oracle 中的想法是否正确……

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

Oracle 会将这一年解释为已经发生的年份,即 1999 年,而不是未来的 2099 年?

4

1 回答 1

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 并且当前年份的最后 2 位数字 >=50,则返回下一个世纪的年份;如果年份 >=50 并且当前年份的最后 2 位数字 <50,则返回上一世纪的年份。

SQL Fiddle 的示例。

于 2013-05-10T15:01:42.540 回答