相关疑难解决方法(0)

对于 DST 之前或之后的日期,如何获得 UTC 和本地时间之间的正确偏移量?

我目前使用以下方法从 UTC 日期时间获取本地日期时间:

SET @offset = DateDiff(minute, GetUTCDate(), GetDate())
SET @localDateTime = DateAdd(minute, @offset, @utcDateTime)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果夏令时发生在GetUTCDate()和之间@utcDateTime@localDateTime最终会休息一个小时。

是否有一种简单的方法可以将非当前日期的日期从 UTC 转换为当地时间?

我使用的是 SQL Server 2005

sql-server-2005 sql-server utc-time timezone

33
推荐指数
5
解决办法
20万
查看次数

带有区域名称 PostgreSQL 错误的“AT TIME ZONE”?

我在回答这个stackoverflow问题时发现了奇怪的结果:

 select * from  pg_timezone_names where name = 'Europe/Berlin' ;
     name      | abbrev | utc_offset | is_dst 
---------------+--------+------------+--------
 Europe/Berlin | CET    | 01:00:00   | f
Run Code Online (Sandbox Code Playgroud)

和下一个查询

select id, 
  timestampwithtimezone, 
  timestampwithtimezone at time zone 'Europe/Berlin' as berlin, 
  timestampwithtimezone at time zone 'CET' as cet 
from data ;
 id  | timestampwithtimezone  |       berlin        |         cet         
 -----+------------------------+---------------------+---------------------
 205 | 2012-10-28 01:30:00+02 | 2012-10-28 01:30:00 | 2012-10-28 00:30:00
 204 | 2012-10-28 02:00:00+02 | 2012-10-28 02:00:00 | 2012-10-28 01:00:00
 203 | 2012-10-28 02:30:00+02 …
Run Code Online (Sandbox Code Playgroud)

postgresql timestamp timezone

12
推荐指数
2
解决办法
6020
查看次数

使用 TIME WITH TIME ZONE 的有效用例是什么?

沿着这个相关问题的思路:

是否有任何有效的实际使用用例 TIME WITH TIME ZONE或应该将其视为反模式?

需要明确的是:我问的是TIME…,而不是TIMESTAMP…

postgresql database-design datatypes timezone time

5
推荐指数
1
解决办法
490
查看次数

在 postgres 中显式保留时区

我一直在研究“查看”时间的不同方式以及如何在 Postgres 中正确映射它,但我仍然不确定实际使用什么。有几篇文章建议或者更确切地说说服您将日期存储为timestamp with time zone,而不是存储为 just timestamp。我尤其在夏令时方面遇到困难。

我的用例是一个简单的面向最终用户的应用程序,只能由“欧洲/柏林”时区的人员访问。用户撰写的帖子会与创建和更新的时间戳一起存储。

假设用户在 上发布了帖子2020-01-01T10:00:00+01。如果用户现在在同一天阅读该帖子,它应该显示posted on 1st of January at 10 am。如果同一篇文章7 月在柏林被点击,它仍然应该显示posted on 1st of January at 10 am“无论夏令时如何”。

我的直觉是将时间存储为 a timestamp without time zone,否则 Postgres 会将该时间转换为 UTC 并以这种方式存储。稍后我将无法参考该帖子发布的实际时区。在这种情况下,它会显示为posted on 1st of January at 11 am(由于柏林现在提前两个小时),如果作者要检查最初的时间,这可能会让他们感到困惑发表了这篇文章。

我的想法是否正确,我是否发现了不使用的极端情况之一timestamp with time zone,或者我在这里错过了一些重要的东西?

postgresql timestamp timezone

5
推荐指数
1
解决办法
1147
查看次数