Sql server T-SQL从时区名称获取小时偏移量
在DB In fieldSql server T-SQL从时区名称获取小时偏移量,sql-server,tsql,timezone,offset,Sql Server,Tsql,Timezone,Offset,在DB In fieldTimeZoneId中,我有如下字符串值: GMT Standard Time W. Europe Standard Time Romance Standard Time FLE Standard Time 我需要用这些字符串值以小时为单位获得int值偏移量,即 GMT Standard Time | 0 W. Europe Standard Time | 1 Romance Standard Time | 1 FLE Standard Time
TimeZoneId
中,我有如下字符串值:
GMT Standard Time
W. Europe Standard Time
Romance Standard Time
FLE Standard Time
我需要用这些字符串值以小时为单位获得int值偏移量,即
GMT Standard Time | 0
W. Europe Standard Time | 1
Romance Standard Time | 1
FLE Standard Time | 2
所有字符串值:
我只需要使用T-SQL。一些东西:
- 您提供的链接已严重过时,仅适用于Windows Embedded POS 1.1。更准确的Windows时区列表可以在注册表中的
中找到,也可以在.NET中的HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones
中找到,或者在命令提示符下调用TimeZoneInfo.GetSystemTimeZones()
tzutil/L
- 您要求的是无效的,因为时区不能用单个数字表示。时区包括对日光节约时间偏移的更改,以及每年的历史更改。请参见中的“时区!=偏移”
- 处理时区通常最好在应用程序层而不是数据库中完成。只有少数场景需要在DB层使用它。如果您不一定需要在数据库中执行此操作,那么就不要这样做
- 与其他数据库平台不同,SQL Server没有内置的时区转换功能
- 要添加时区转换功能,您需要维护时区数据表,并编写转换函数以使用该数据。数据经常变化,因此保持最新是很重要的
- 幸运的是,我为你做了大部分工作。你可以使用我的项目。它目前适用于IANA/TZDB时区(如
,或美国/纽约
),而不是Windows时区,但它可以。您可以等待此功能,也可以等待欧洲/伦敦