如果我从注册表中获取我的时区信息到 SQL 中,我会得到完整的 TZI 数据结构:
DECLARE @TzKey nvarchar(512)
Set @TzKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific Standard Time'
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', @TzKey, 'TZI'
它返回完整的二进制值
'0xE0010000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000'
但是,如果我将它存储在这样的变量中:
DECLARE @TzKey nvarchar(512)
DECLARE @TZI binary(85)
Set @TzKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific Standard Time'
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', @TzKey, 'TZI', @TZI OUTPUT
然后SELECT @TZI AS TzInfo
返回'0xE001'
我已经尝试了所有我能想到的二进制/varbinary 和长度(包括 MAX)排列。
有任何想法吗?