在哪里可以获得用于 SQL Server 的简单时区表? [关闭]

Posted

技术标签:

【中文标题】在哪里可以获得用于 SQL Server 的简单时区表? [关闭]【英文标题】:Where can I get a simple table of time zones for use in SQL server? [closed] 【发布时间】:2010-12-07 00:05:43 【问题描述】:

我只需要制作一个包含时区的 SQL 表——此时,我唯一需要的是在在线表单上填充一个下拉列表。我正在设想一些简单的东西,包括 ISO 代码、名称、UTC 偏移量,也许还有代表性城市列表。我以为我可以轻松地在网上找到要复制和粘贴的内容,但找不到任何内容。

我被this question 引导到tz database,它是二进制形式的,对于我需要的东西来说似乎有点矫枉过正。或者,我可以从TimeAndDate.com 之类的网站将其拼凑起来,但这似乎比应该做的工作更多。

或者我是不是走错了路——例如我应该从服务器的操作系统获取这些信息吗?

【问题讨论】:

取决于你想要做什么以及为什么知道它很重要。您可以在在线表单上使用 javascripts date-object 来找出用户配置他们的计算机所在的时区(不一定是他们现在所在的位置) 【参考方案1】:

我知道这个问题很久以前就被问过了,但是对于任何可能仍然需要它的人,在这里您可以找到时区列表的 sql 数据https://timezonedb.com/download

【讨论】:

【参考方案2】:

所有时区列表在这里:

select * from sys.time_zone_info

享受吧!

【讨论】:

仅限 SQL 2016+。【参考方案3】:

我更进一步地回答了 marc_s - 这是创建简单时区表的代码和为每个 UTC 记录生成插入的 .net 代码:

--TSQL TO CREATE THE TABLE
CREATE TABLE [dbo].[TimeZones] (
[TimeZoneID]           INT              IDENTITY (1, 1) NOT NULL,
[DisplayName]  VARCHAR(100) NOT NULL,
[StandardName]        VARCHAR (100)    NOT NULL,
[HasDST]    BIT  NOT NULL,
[UTCOffset]      INT NOT NULL
CONSTRAINT [PK_TimeZones] PRIMARY KEY CLUSTERED ([TimeZoneID] ASC)
);
GO

为了生成插入语句,我使用 Visual Studio 创建了一个默认的 Web .net 项目,并在我粘贴的视图中运行了该项目,然后复制了呈现的代码(请记住从视图源复制它,而不是直接从html页面):

System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();

foreach (TimeZoneInfo timeZone in timeZones)

    Response.Write("INSERT INTO TimeZones (DisplayName, StandardName, HasDST, UTCOffset) VALUES ('" + timeZone.DisplayName.Replace("'", "''") + "', '" + timeZone.StandardName.Replace("'", "''") + "', '" + timeZone.SupportsDaylightSavingTime + "', '" + timeZone.BaseUtcOffset + "')" + Environment.NewLine);
 

希望对你有帮助

【讨论】:

【参考方案4】:

从操作系统获取。

如果您已标记此 asp.net,请查看 this example of how to enumerate timezones。

【讨论】:

【参考方案5】:

您使用的是 .NET 3.5 吗?您可以在 .NET 3.5 中轻松获取时区列表,然后将该信息(或至少您需要的任何信息)存储在 SQL Server 数据库中。

您可以遍历 .NET 3.5 可用和已知的所有时区,并将相关信息存储到 SQL Server 表中:

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();

foreach (TimeZoneInfo timeZone in timeZones)

    // store whatever you need to store to a SQL Server table

马克

【讨论】:

【参考方案6】:

你想要一个好的列表来复制/粘贴:http://en.wikipedia.org/wiki/Timezones

【讨论】:

以上是关于在哪里可以获得用于 SQL Server 的简单时区表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:关于用户定义的表类型的 ltrim

如何配置客户端协议(SQL Server 配置管理器)

SQL Server 常用函数使用方法(持续更新)

使用 SqlDataAdapter 时获取 SQL Server DATEDIFF 列作为 TimeSpan

我在哪里可以获得用于 NHibernate 的 Linq?

我在哪里可以获得 pldbgapi.sql 以便为 postgresql 安装调试器?