如何在select语句中将oracle时间戳值从UTC转换为EST?

如何在select语句中将oracle时间戳值从UTC转换为EST?,oracle,Oracle,嗨,我有一个包含时间戳数据的日期字段(开放时间)。本栏中的时间以UTC为单位。我想选择该列并将其转换为EST,然后将其插入另一个表中。我希望它是原始时间戳时的EST(考虑基于日期、月份和年份的夏令时)。我一直在阅读oracle中的各种时区函数,但大多数似乎都专注于更改数据库的时区,我不需要这样做。(开放时间)字段始终以UTC记录 BLUF:我需要选择一个根据UTC时间记录的时间戳字段(开放时间),并将其转换为当时的EST(开放时间)。谢谢。如果您将时间戳与时区一起使用数据类型: Oracle安装

嗨,我有一个包含时间戳数据的日期字段(开放时间)。本栏中的时间以UTC为单位。我想选择该列并将其转换为EST,然后将其插入另一个表中。我希望它是原始时间戳时的EST(考虑基于日期、月份和年份的夏令时)。我一直在阅读oracle中的各种时区函数,但大多数似乎都专注于更改数据库的时区,我不需要这样做。(开放时间)字段始终以UTC记录


BLUF:我需要选择一个根据UTC时间记录的时间戳字段(开放时间),并将其转换为当时的EST(开放时间)。谢谢。

如果您将时间戳与时区一起使用数据类型:

Oracle安装程序

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
查询

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
输出

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
或者,如果您只是使用
时间戳
数据类型:

Oracle安装程序

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
查询

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
输出

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    

如果将时间戳与时区一起使用数据类型:

Oracle安装程序

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
查询

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
输出

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
或者,如果您只是使用
时间戳
数据类型:

Oracle安装程序

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
查询

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
输出

CREATE TABLE Table_Name (
  open_time TIMESTAMP WITH TIME ZONE
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
SELECT open_time AT TIME ZONE 'UTC' AS utc,
       open_time AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
CREATE TABLE Table_Name (
  open_time TIMESTAMP
);

INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
       CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
FROM   Table_Name;
UTC                                 EST                               
----------------------------------- -----------------------------------
02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    

奇妙的答案,非常感谢你花这么多时间把它整理得如此简洁。注意时区<代码> EST <代码>不考虑夏令时,尝试<代码>插入Table的名字值(SyistMeMeST+间隔6个月)在时区“UTC”);代码>用于比较。使用地区名称,例如,
从…
EST5EDT中选择时区“美国/东部”的开放时间,我正在使用此,根据我的检查,这是我想要的。谢谢<代码>选择I.DTMMOpenOpTimes,Fas-ZTZ(CAST(I.DTMPEOPEN时间戳),'0'')在DCC.事件I/Eng/<代码>时区“奇妙的答案”,非常感谢您花这么多时间把它整理得如此简洁。注意时区<代码> EST >代码>不考虑夏令时,尝试<代码>插入Table名称值(SYSTIMESTAMP+时区“UTC”的间隔“6”个月)用于比较。使用地区名称,例如,
从…
EST5EDT中选择时区“美国/东部”的开放时间,我正在使用此,根据我的检查,这是我想要的。谢谢<代码>从dcc.i的时区“美国/东部”的TZ(cast(i.dtm\U open\U time作为时间戳),“0:00”)中选择i.dtm\U open\U时间