【发布时间】:2012-04-03 09:51:51
【问题描述】:
我也在 Oracle Doc 中搜索以下内容:
- Oracle 中时间戳的范围是多少?
我知道日期是 -4712,1 月 01 日到 9999 年 12 月 31 日,但是时间戳呢?
任何线索或提示我可以在哪里搜索?
【问题讨论】:
我也在 Oracle Doc 中搜索以下内容:
我知道日期是 -4712,1 月 01 日到 9999 年 12 月 31 日,但是时间戳呢?
任何线索或提示我可以在哪里搜索?
【问题讨论】:
您可以随时尝试:
SQL> select to_timestamp( '9999-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) from dual;
TO_TIMESTAMP('9999-12-3123:59:59','YYYY-MM-DDHH24:MI:SS')
---------------------------------------------------------------------------
31-DEC-99 11.59.59.000000000 PM
和:
SQL> select to_timestamp( '9999-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' )+1 from dual;
select to_timestamp( '9999-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' )+1 from dual
*
ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
【讨论】:
如果 TIMESTAMP 的 DATE 部分的范围小于 DATE 的范围,那将是令人惊讶的,因此应该是:
-4712-01-01 00:00:00 to 9999-12-31 23:59:59.999999
假设没有时区; UTC 值可能被限制在该范围内,但东部时区的某个人可能会设法在他们的时区看到 1000-01-01 上的数据值。
在 Oracle 的网站上很难找到确切的数据。我在一项临时调查中发现的最好的结果是:
可能还有其他人。
我找到了一句话:
TIMESTAMP 数据类型
TIMESTAMP 数据类型是 DATE 数据类型的扩展。它存储年份, DATE 数据类型的月和日,以及小时、分钟和秒值。
【讨论】: