Oracle更改夏令时的时间戳列值
我有一个timestamp列,其值为12/02/2019 02:00:00。但当夏时制的月份到来时,该值会自动更改为2019年2月12日01:00:00。现在,如果我将时区设置为欧洲/伊斯坦布尔,它将成为原始值。但当夏令时,我必须每隔几个月更改一次时区。我需要查询返回原始值。对于正常月份,我必须再次将时区设置为Asia/Istanbul,否则值会向前更改。如果您的列是用数据类型定义的,则它将与数据库时区一起存储,并与会话时区一起显示 请参见本例中C3列的显示值(而非存储值)如何从20:28更改为21:28:Oracle更改夏令时的时间戳列值,oracle,plsql,Oracle,Plsql,我有一个timestamp列,其值为12/02/2019 02:00:00。但当夏时制的月份到来时,该值会自动更改为2019年2月12日01:00:00。现在,如果我将时区设置为欧洲/伊斯坦布尔,它将成为原始值。但当夏令时,我必须每隔几个月更改一次时区。我需要查询返回原始值。对于正常月份,我必须再次将时区设置为Asia/Istanbul,否则值会向前更改。如果您的列是用数据类型定义的,则它将与数据库时区一起存储,并与会话时区一起显示 请参见本例中C3列的显示值(而非存储值)如何从20:28更改为
SQL> create table t (
c1 timestamp,
c2 timestamp with time zone,
c3 timestamp with local time zone
);
SQL> alter session set time_zone = 'Europe/Rome';
SQL> insert into t (c1, c2, c3) values (systimestamp, systimestamp, systimestamp);
SQL> select * from t;
C1 C2 C3
-------------------------------------------------- ----------------------------------- -----------------------------------
20/08/2020 20:28:17.942586 20/08/2020 20:28:17.942586 +02:00 20/08/2020 20:28:17.942586
SQL> alter session set time_zone = 'Europe/Istanbul';
SQL> select * from t;
C1 C2 C3
-------------------------------------------------- ----------------------------------- -----------------------------------
20/08/2020 20:28:17.942586 20/08/2020 20:28:17.942586 +02:00 20/08/2020 21:28:17.942586
创建表格“TIMESTAMP_TABLE_TURKEY”(“AUQ_ID”编号(10,0)非空启用,“AUD_ID”编号(10,0)非空启用,“AUS_ID”编号(10,0),“TSK_ID”编号(10,0),“AUQ_计划的_DTTM”时间戳(6),“AUQ_创建的_DTTM”时间戳(6)非空启用,“AUQ_DESC”VARCHAR2(255)非空启用,“AUQ_回溯频率_CMP ID”编号(10,0),“AUQ\u LOOKBACK\u PIVOT\u DTTM”时间戳(6),“AUQ\u LOOKBACK\u START\u DTTM”时间戳(6),;这是表创建查询。我没有设置带有本地时区的时间戳列。