Azure SQL 将 "Time zone display name" 转换为 "Time zone ID"
Azure SQL Convert "Time zone display name" to "Time zone ID"
我正在使用最新版本的 Azure SQL。我有一系列 Time zone display name
,想将它们转换成 Time zone ID
。我知道 SQL 服务器包含显示名称和 ID。 sys.time_zone_info
具有所有 Time zone ID
,但像 CURRENT_TIMEZONE ()
这样的命令输出 Time zone display name
。我所希望的是一个简单的函数,它接受一个字符串 Time zone display name
和 returns 名称映射到的 Time zone ID
,但我找不到对它的任何引用。而且我找不到实际存储映射的 table。
我认为我们可以创建一个 table 来存储包含两列 Time zone ID
和 Time zone display name
的信息。然后创建一个存储过程来查询,输入 Time zone display name
return Time zone ID
.
在sys.time_zone_info
中,名字是的ID。不是最大的标准化目的。
如果您使用它来为您的应用程序创建自己的内部时区列表,那么我认为 Joseph Xu 的答案是正确的。
如果您将此用于针对 Azure SQL 的查询并期望时区本地化,请记住,根据 Azure SQL 文档,数据库在 UTC
中运行, CURRENT_TIMEZONE_ID() 将永远 return UTC
。
据我所知,SQL Azure 不提供 table 以从 Time Zone ID
转换为 Time Zone display name
。我认为没有任何 table 包含该信息,因为 sys.time_zone_info
系统视图 obtains the information from internal functions 而不是您可以检查的其他 table。
您可以使用 T-SQL Toolbox 中的一些 table 和函数,或者您可以创建自己的 table。
使用自定义 table
您可以获得(and/or 修改)从 TSqlToolbox 创建 table 的代码。此代码创建一个包含所需信息的 table DateTimeUtil.Timezone
。
我做了一个例子,你可以在 db<>fiddle
中尝试
SELECT identifier
FROM [TimeZone]
WHERE [TimeZone].[DisplayName] = '(UTC-08: 00) Baja California'
| Identifier |
|----------------------------------|
| Pacific Standard Time (Mexico) |
我正在使用最新版本的 Azure SQL。我有一系列 Time zone display name
,想将它们转换成 Time zone ID
。我知道 SQL 服务器包含显示名称和 ID。 sys.time_zone_info
具有所有 Time zone ID
,但像 CURRENT_TIMEZONE ()
这样的命令输出 Time zone display name
。我所希望的是一个简单的函数,它接受一个字符串 Time zone display name
和 returns 名称映射到的 Time zone ID
,但我找不到对它的任何引用。而且我找不到实际存储映射的 table。
我认为我们可以创建一个 table 来存储包含两列 Time zone ID
和 Time zone display name
的信息。然后创建一个存储过程来查询,输入 Time zone display name
return Time zone ID
.
在sys.time_zone_info
中,名字是的ID。不是最大的标准化目的。
如果您使用它来为您的应用程序创建自己的内部时区列表,那么我认为 Joseph Xu 的答案是正确的。
如果您将此用于针对 Azure SQL 的查询并期望时区本地化,请记住,根据 Azure SQL 文档,数据库在 UTC
中运行, CURRENT_TIMEZONE_ID() 将永远 return UTC
。
据我所知,SQL Azure 不提供 table 以从 Time Zone ID
转换为 Time Zone display name
。我认为没有任何 table 包含该信息,因为 sys.time_zone_info
系统视图 obtains the information from internal functions 而不是您可以检查的其他 table。
您可以使用 T-SQL Toolbox 中的一些 table 和函数,或者您可以创建自己的 table。
使用自定义 table
您可以获得(and/or 修改)从 TSqlToolbox 创建 table 的代码。此代码创建一个包含所需信息的 table DateTimeUtil.Timezone
。
我做了一个例子,你可以在 db<>fiddle
中尝试SELECT identifier
FROM [TimeZone]
WHERE [TimeZone].[DisplayName] = '(UTC-08: 00) Baja California'
| Identifier |
|----------------------------------|
| Pacific Standard Time (Mexico) |