gpt4 book ai didi

sql - 在 Oracle 中显示与时间戳关联的时区

转载 作者:行者123 更新时间:2023-12-03 23:52:52 26 4
gpt4 key购买 nike

我的 Oracle 表中的 CRT_TMSTMP 字段是时间戳类型字段。

我正在寻找与此字段的值关联的时区,因为它不会显示在我的 SQL Developer 客户端中。

从我的研究看来 to_char() 是不够的,所以我想知道如何在查询中显示这个时区?

最佳答案

一个 TIMESTAMP不包含任何时区信息。文档说“它包含小数秒但没有时区”,但它似乎隐含地与数据库服务器处于同一时区。

您需要将您的列设为 TIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONE存储和检索链接到该值的时区。

如果您确实有其中一种类型的列,那么您可以使用 TZR date format model element (或 TZDTZH 和/或 TZM):

select to_char(CRT_TMSTMP, 'YYYY-MM-DD HH24:MI:SS.FF3 TZR') from ...

但是,如果您尝试使用普通的 TIMESTAMP,它只会报告服务器时区。 (我以为它出错了,但显然不是)。

作为演示:

create table t42 (CRT_TMSTMP timestamp,
CRT_TMSTMP_TZ timestamp with time zone,
CRT_TMSTMP_LTZ timestamp with local time zone);

insert into t42 values (current_timestamp,
current_timestamp at time zone 'AMERICA/NEW_YORK',
current_timestamp at time zone 'AMERICA/LOS_ANGELES');

select to_char(CRT_TMSTMP, 'YYYY-MM-DD HH24:MI:SS.FF3 TZR') as ts,
to_char(CRT_TMSTMP_TZ, 'YYYY-MM-DD HH24:MI:SS.FF3 TZR') as ts_tz,
to_char(CRT_TMSTMP_LTZ, 'YYYY-MM-DD HH24:MI:SS.FF3 TZR') as ts_ltz
from t42;

TS TS_TZ TS_LTZ
-------------------------------------------------------------- -------------------------------------------------------------- --------------------------------------------------------------
2014-07-17 17:09:36.673 +00:00 2014-07-17 12:09:36.673 AMERICA/NEW_YORK 2014-07-17 17:09:36.673 EUROPE/LONDON

SQL Fiddle .

关于sql - 在 Oracle 中显示与时间戳关联的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com