当前位置: 首页 > 知识库问答 >
问题:

时区函数的Postgres显示错误的时间?

谷梁宝
2023-03-14

我正在使用转换到新时区UTC+3,这等于EAT时区,但Postgres(9.1)显示错误的时间

select '2015-01-13 08:40:00.0'::timestamp with time zone AT TIME ZONE 'UTC+03', 
       '2015-01-13 08:40:00.0'::timestamp with time zone AT TIME ZONE 'EAT';

(默认时区为斯德哥尔摩)

"2015-01-13 04:40:00",
"2015-01-13 10:40:00"

如果将JodaTime与两个时区一起使用,则显示相同的正确结果“2015-01-13 10:40:00”。

共有1个答案

阎扬
2023-03-14

在Postgres文档中,可以使用::timestamptz而不是::timestamptz,在进行转换时,我发现了首选的结果;因为它是可用选项中最简洁的,同时仍然是可读的。

SELECT created_at
      ,created_at::timestamp AT TIME ZONE 'EDT' -- yields bad result
      ,created_at::timestamp WITH TIME ZONE AT TIME ZONE 'EDT'
      ,created_at AT TIME ZONE 'UTC' AT TIME ZONE 'EDT'
      ,created_at::timestamptz AT TIME ZONE 'EDT'
2019-03-29 18:49:25.250431 -- raw UTC data
2019-03-29 22:49:25.250431 -- erroneous result  
2019-03-29 14:49:25.250431 -- accurate result    
2019-03-29 14:49:25.250431 -- accurate result   
2019-03-29 14:49:25.250431 -- accurate result
 类似资料:
  • 问题内容: 当我尝试记录当前日期时: 要么 (在Swift 3中) 或任何日期对象,它显示错误的时间。例如,现在大约是16:12,但上面显示的是 我的日期在错误的时区吗?如何确定我的日期具有正确的时区? 为什么会这样,我该如何解决?如何在打印语句或调试器中轻松地在本地时区显示任意日期? (请注意,这个问题是一个“铃声”,因此我可以提供一个简单的Swift 3 / Swift 2 Date / NS

  • 第二个选项(来自Java SimpleDateFormat(“yyyy-mm-dd't'hh:mm:ss'z'”)将时区作为IST提供) 在这两种情况下,时间都错了。我的笔记本电脑或手机显示的不是当地时间,但输出时间是提前2小时。我怎么才能改变呢?我想有柏林(CEST)的当前时间也显示在我的电脑上。我感谢每一个评论。

  • 问题内容: 我在Postgres的平等问题上遇到了麻烦。 平等的工作方式与我期望的一样,如果在对时区进行归一化之后,如果时间相同,那么它应该为真: 但是,似乎不适用于以下情况: 但是,不平等在我期望他们如何实现的过程中起作用: 我有什么误会吗?如何以与平等相同的方式处理时区来评估平等? 问题答案: 以下是两种评估平等的方法: 在 第一个 将它添加到一个。该 第二 通过使用构建体。 但不要使用。曾经

  • 我的数据存储在数据库中,我使用来显示数据。 在中,一切看起来都应该如此,但在中,日期显示得应该如此。这两个类型实际上并不重要,但类型看起来像一个实际上是一个。 如何才能正确显示? 元数据库:

  • 我正在做一个网站,有一个预订功能。我想要一份我目前日期的预订清单。

  • 尝试将独立Java应用程序连接到Postgres时,我遇到以下错误: org.postgresql.util.PSQLException: FATAL:参数"TimeZone":"America/New_York"在org.postgresql.core.v3无效。ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.jav