首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时区对话

时区对话
EN

Stack Overflow用户
提问于 2021-06-03 02:21:26
回答 1查看 42关注 0票数 0

我不太精通时区的工作。所以,如果这是一个相当反问的问题,请原谅我。

我有这样的疑问:

代码语言:javascript
复制
SELECT CAST(TO_DATE('05182021221504','MMDDYYYYHH24MISS') AS TIMESTAMP)
         AT TIME ZONE 'UTC'
FROM   dual;

为什么我的结果是5/19? 5/19/2021 3:15:04.000000 AM +00:00

时间明确为晚上10:15:04 (22:15:04),日期为5/18。为什么这会将它滚动到5/19天/时间?

EN

回答 1

Stack Overflow用户

发布于 2021-06-03 03:04:59

你的意思是“转换”(不是“对话”)吗?

无论如何,似乎您输入了一个表示不带时区的日期-时间的字符串,并且您希望转换为带有时区的时间戳,假设时区为UTC。到目前为止对吗?

如果是这样,那么您使用的函数是错误的。您需要from_tz,例如

代码语言:javascript
复制
select from_tz(to_timestamp('05182021221504','MMDDYYYYHH24MISS'), 'UTC')
from   dual;

现在,如果您想了解您的尝试发生了什么:at time zone从一个时区转换到另一个时区。您的输入没有时区,它只是一个抽象的时间戳。Oracle不会抛出错误,而是使用默认值-会话的时区。因此,它将日期和时间从CDT转换为UTC,从而产生不同的日期和时间。如果您查看时差,请记住UTC没有“夏令时”,而CDT有。(在回答评论时,你说你的时区是CST;我强烈怀疑,这很可能是CDT,意思是-受夏令时的影响。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67810535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档