我有这段代码在 SQL 中运行良好。但是我想使用不同的时区格式,例如'America/New_York'
代替'US Eastern Standard Time'
SELECT TODATETIMEOFFSET(CAST(CURRENT_TIMESTAMP as datetime), -5) AT TIME ZONE 'US Eastern Standard Time'
FROM dual
目前,SQL Server仅支持Windows时区标识符。您可以在此处投票支持添加 IANA 时区支持。 https://web.archive.org/web/20200814055434/https://feedback.azure.com/forums/908035-sql-server/suggestions/40198465-support-iana-time-zone-identifiers-with-at-time-zo
与此同时,您可以选择:
-
在应用程序层中,您可以将 IANA 时区 ID 转换为等效的 Windows 时区 ID。如果您使用 .NET,最简单的方法是使用我的时区转换器 https://github.com/mj1856/TimeZoneConverter图书馆。否则,您可以使用CLDR 映射文件 https://github.com/unicode-org/cldr/blob/master/common/supplemental/windowsZones.xml手动或任何基于它的库实现。
-
你可以用我的SQL Server 时区支持 https://github.com/mj1856/SqlServerTimeZoneSupport项目,它使用自定义表和函数而不是AT TIME ZONE
陈述。
-
您可以将所有时区转换逻辑移至应用程序层而不是数据库中。
另外,还有一点——US Eastern Standard Time
映射到America/Indianapolis
。你可能想要Eastern Standard Time
,映射到America/New_York
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)