Oracle TIMESTAMP WITH TIMEZONE 命名区域与偏移量

标签 oracle datetime timezone timestamp dst

在 oracle 中,是否始终存储命名时区?

我一直在我们的系统中测试此列,在某些地方时间戳显示为:

26-FEB-09 11.36.25.390713 AM +13:00

但其他时候是:
26-FEB-09 11.36.25.390713 AM Pacific/Auckland

如果该值存储为前者,是否意味着未存储实际时区?

我担心,因为如果 future 的日期只存储一个偏移量,我们可能无法确定原始时区的实际时间,因为您可以确定时区的偏移量,但反之则不行。

谢谢

最佳答案

很容易测试

 create table foo ( tswtz TIMESTAMP WITH TIME ZONE);
    /

insert into foo values (TO_TIMESTAMP_TZ ('21-FEB-2009 18:00:00 -5:00', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'));


insert into foo values (TO_TIMESTAMP_TZ ('21-FEB-2009 18:00:00 EST', 'DD-MON-YYYY HH24:MI:SS TZR'));
    select tswtz, extract(timezone_abbr from tswtz), extract(TIMEZONE_REGION from tswtz)
from foo;


TSWTZ         EXTRACT(TIMEZONE_ABBRFROMTSWTZ) EXTRACT(TIMEZONE_REGIONFROMTSWTZ)                                
------------- ------------------------------- ---------------------------------------------------------------- 
21-FEB-09 06.00.00.000000000 PM -05:00   UNK                          UNKNOWN                                                          
21-FEB-09 06.00.00.000000000 PM EST      EST                             EST                                                              

2 rows selected

它存储您告诉它的内容。如果你告诉它一个偏移量,这个偏移量可能对一个或多个时区有好处,那么为什么它只选择一个呢?

关于Oracle TIMESTAMP WITH TIMEZONE 命名区域与偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588286/

相关文章:

sql - postgresql 中咨询锁超时

sql - SQL触发器(编译错误)

asp.net - 在非关系数据库中创建 View

c# - DateTime.Parse 可以格式化不寻常的格式字符串吗?

C# - 两个 DateTimes 之间的持续时间(以分钟为单位)

javascript - Moment.js 格式时间不正确?

sql - 带时区的 Oracle DateTime 查询

mysql - 所有数据库的通用数据类型应该是什么

python - 将日期时间转换为 POSIX 时间

javascript - 如何在 JavaScript 中显示用户时区的缩写名称(不是 GMT 偏移量)?