sat*_*ana 10 sql oracle gmt timezone-offset
我正在使用查询从Oracle DB获取一些应用程序收到日期,该日期存储为GMT.现在我必须在检索时将其转换为东部标准/夏令时.我使用以下查询:
select to_char (new_time(application_recv_date,'gmt','est'), 'MON dd, YYYY') from application
Run Code Online (Sandbox Code Playgroud)
它适用于标准时间.但是对于夏令时,我们需要根据时区信息将其转换为'edt'.我不太清楚如何做到这一点.请帮帮我
Noe*_*oel 12
您可以使用此查询,而无需担心时区更改.
select to_char(cast(application_recv_date as timestamp) at time zone 'US/Eastern',
'MON dd, YYYY'
)
from application;
Run Code Online (Sandbox Code Playgroud)
例如:
美东时间:
select cast(date'2014-04-08' as timestamp) d1,
cast(date'2014-04-08' as timestamp) at time zone 'US/Eastern' d2
from dual;
D1 D2
---------------------------------- -------------------------------------------
08-APR-14 12.00.00.000000 AM 07-APR-14 08.00.00.000000 PM US/EASTERN
Run Code Online (Sandbox Code Playgroud)
美东时间:
select cast(date'2014-12-08' as timestamp) d1,
cast(date'2014-12-08' as timestamp) at time zone 'US/Eastern' d2
from dual;
D1 D2
---------------------------------- -------------------------------------------
08-DEC-14 12.00.00.000000 AM 07-DEC-14 07.00.00.000000 PM US/EASTERN
Run Code Online (Sandbox Code Playgroud)
更新:
感谢Alex Poole提醒,如果未指定时区,则使用本地时区进行转换.
要强制将日期识别为GMT,请使用from_tz.
from_tz(cast(date'2014-12-08' as timestamp), 'GMT') at time zone 'US/Eastern'
Run Code Online (Sandbox Code Playgroud)
在 Oracle 中,您可以使用以下查询实现此目的:
Select current_timestamp, current_timestamp at time zone 'Australia/Sydney' from dual;
Run Code Online (Sandbox Code Playgroud)
Australia/Sydney
您要转换时间的时区名称在哪里。
归档时间: |
|
查看次数: |
52380 次 |
最近记录: |