Questions tagged «timezone»

5
如何在SQL Server中正确处理TimeZone?
我的本地开发服务器在中东,但我的生产服务器在英国。 我需要向用户显示其所在时区的日期。例如,如果用户在沙特阿拉伯,那么我需要根据沙特阿拉伯格式显示时间。 是否应该创建一个名为TimeZone的新数据库表并将时间保存在UTC中?

10
如何获得夏令时之前或之后的某个日期的UTC与当地时间之间的正确偏移量?
我目前使用以下方法从UTC日期时间获取本地日期时间: SET @offset = DateDiff(minute, GetUTCDate(), GetDate()) SET @localDateTime = DateAdd(minute, @offset, @utcDateTime) 我的问题是,如果夏令时发生在GetUTCDate()和之间@utcDateTime,那么@localDateTime最终会减少一个小时。 是否有简单的方法可以将utc转换为非当前日期的本地时间? 我正在使用SQL Server 2005

2
如何最好地在PostgreSQL中存储时间戳?
我正在研究PostgreSQL数据库设计,我想知道如何最好地存储时间戳。 假设条件 不同时区的用户将数据库用于所有CRUD功能。 我看了两个选项: timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC') bigint NOT NULL DEFAULT 因为timestamp我会发送一个字符串,该字符串代表INSERT时刻的确切(UTC)时间戳。 因为bigint我会以数字格式存储完全相同的内容。(时区问题是在将毫秒移交给服务器之前处理的,因此始终在UTC中使用毫秒。) 存储a的一个主要优点bigint是可以更容易存储和检索,因为传递正确格式的时间戳比简单的数字(自Unix Epoc以来的毫秒数)要复杂得多。 我的问题是,哪种方法可以进行最灵活的设计,以及每种方法的陷阱是什么?

2
为什么“时区”不确定?
SQL Server 2016 AT TIME ZONE似乎不确定。但是,我无法找到正式说明这一点的文档,也无法找到其背后的理由。 为什么AT TIME ZONE不确定? 显示非确定性的示例 执行中: CREATE TABLE Test ( LegacyTimestamp DATETIME, Timestamp AS LegacyTimestamp AT TIME ZONE 'Eastern Standard Time' PERSISTED ); 返回以下错误: Msg 4936, Level 16, State 1, Line 1 Computed column 'Timestamp' in table 'Test' cannot be persisted because the column is …

1
如何在没有timezome的情况下将unix时间转换为PostgreSQL的Timstamp?
我有一个在其时区设置为印度时区(即UTC +5:30)的服务器上运行的PostgreSQL数据库。 我在这样创建的表中有一些数据: CREATE TABLE "CLOUDDATA" ( "CD_Tm_Obs" timestamp without time zone, "CD_Avg_Cloud" double precision ) 我想查询数据并获取特定时间的值。我的输入将是Unix时间戳(即1970年1月1日的秒数) 我发现将unix时间转换为时间戳的唯一方法是: select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))。但这会创建带有时区的时间戳。我的数据在中timestamp without time zone,因此没有任何结果。 如何在没有timezome的情况下将unix时间转换为PostgreSQL的Timstamp?

1
为什么时区在Postgres的0001年有如此疯狂的UTC偏移量?
在Postgres 9.5中,我很惊讶地看到下面的年份在尝试年份0001(没有年份0 0000)时看到。 偏移量-07:52:58? 一些示例代码。请注意,我混合使用TIMESTAMP WITH TIME ZONE和TIMESTAMP WITHOUT TIME ZONE,因此请仔细阅读。 SET TIME ZONE 'America/Los_Angeles' ; SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0', TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z', TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z') ; ("2015-01-01 00:00:00-08","0001-12-31 16:07:02-07:52:58 BC","0001-01-01 00:00:00") 我对第二个值感到惊讶:0001-12-31 16:07:02-07:52:58 BC。我知道我们必须向后退8 America/Los_Angeles个小时,比UTC 落后8个小时,但要相差-08:00。但不是-08:00偏移量是-07:52:58。为什么? UTC下没问题 在UTC下输入数据时没有这种问题。 SET TIME …


3
区域名称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 和下一个查询 select id, timestampwithtimezone, timestampwithtimezone at time zone 'Europe/Berlin' as berlin, timestampwithtimezone at time zone 'CET' as cet from data ; id | timestampwithtimezone | …

2
在数据集市/仓库中处理时区
我们正在开始设计数据集市/仓库的构建基块,我们需要能够支持所有时区(我们的客户来自世界各地)。从在线(和在书中)阅读讨论中,一个常见的解决方案似乎是在事实表中具有单独的日期和时间维度以及时间戳。 但是,我很难回答的问题是,考虑到我的动态时区要求,日期和时间维度实际上对我有什么好处?时间维度更有意义,但我在日期维度方面遇到了麻烦。日期维度的一般设计方法通常包括属性,例如天名称,星期几,月名称等。我所遇到的问题是,2013年12月31日(星期二)UTC的11:00 PM是星期三,2014年1月1日,位于UTC + 2之后的所有时区。 因此,如果我将不得不对每个查询(和报告)进行所有这些时区转换,那么拥有和存储我可能永远不会使用的这些属性(看起来像)有什么意义呢?有人建议在每个时区都有事实行,但这对我来说似乎很荒谬。我们需要每月能够存储数百万条记录。 其他人则建议有一个时区桥接表,尽管这在一定程度上是有意义的,但似乎也很复杂,需要进行额外的连接才能完成我的客户端应用程序和报告应该可以从某个日期轻松确定的事情(报告主要基于网络)那里有许多库可帮助您转换,显示和格式化日期)。 我唯一能想到的是按日期和小时分组的简便性和可能的​​性能,但实践的糟糕之处在于按日期部分分组(我们正在使用MS SQL,但我们将查询数百万行)或我们应该考虑只是非常简单的日期和时间维度,而在大多数情况下,如星期一之类的大多数文字,时,日,月和年的数字最多不超过几小时,那么在时区发挥作用时就没有多大意义了?

2
数据仓库设计,用于针对多个时区的数据进行报告
我们正在尝试优化数据仓库设计,以支持针对许多时区的数据进行报告。例如,我们可能有一个关于一个月活动的报告(数百万行),该报告需要显示按一天中的小时分组的活动。当然,一天中的那个小时必须是给定时区的“本地”小时。 当我们仅支持UTC和一个本地时间时,我们的设计效果很好。事实表上的UTC和本地时间的日期和时间维度的标准设计。但是,如果我们必须支持100多个时区的报告,则该方法似乎无法扩展。 我们的事实表将变得非常广泛。另外,我们还必须解决SQL中的语法问题,即指定在报告的任何给定运行中使用哪个日期和时间ID进行分组。也许是一个非常大的CASE语句? 我已经看到了一些建议,可以按您覆盖的UTC时间范围获取所有数据,然后将其返回到表示层以转换为本地并在那里进行汇总,但是使用SSRS进行的有限测试表明这将非常慢。 我也参考了一些有关该主题的书籍,它们似乎都说只有UTC并可以进行转换,或者只有UTC和一个本地语言。将不胜感激任何想法和建议。 注意:此问题类似于:在数据集市/仓库中处理时区,但是我无法对此问题发表评论,因此感到这是值得的。 更新:在 Aaron进行了一些重大更新并发布了示例代码和图表之后,我选择了Aaron的答案。我先前对他的答案的评论不再有意义,因为它们涉及答案的原始编辑。如果有必要,我会尝试再次更新此内容

1
夏令时
在我的环境中,有一些服务器在本机备份和Ola Hallengren计划上运行。我们的服务器是2008年,2012年和2014年的组合。所有完整备份均在凌晨12点进行,日志备份每15分钟进行一次。 我以前从未考虑过夏令时,因此请告诉我应该进行哪些调整。 凌晨12点的完整备份会受到影响吗?日志备份会怎样?

1
从SQL Server获取时区键名的最佳方法
以下是我拼凑而成的内容,但我想看看还有哪些其他可用的方法。 SET NOCOUNT ON; GO DECLARE @tz VARCHAR(50) EXEC [master].[dbo].[xp_regread] 'HKEY_LOCAL_MACHINE' ,'SYSTEM\CurrentControlSet\Control\TimeZoneInformation' ,'TimeZoneKeyName' ,@tz OUT; SELECT GETDATE() ,'(' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),3),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),2),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),1),1) +')' 输出:2014-10-14 16:22:21.037(CST)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.