是否可以在SQL中获取时区城市信息?以以下格式准确

时间:2018-08-23 10:29:19

标签: sql sql-server stored-procedures

我想使用存储过程以以下格式获取计算机的时区,但我所管理的只是UTC + 5.30部分。

enter image description here

我到目前为止的进展:

CREATE PROCEDURE [dbo].[UspGetTimeZone]

AS
SET NOCOUNT ON;


BEGIN

DECLARE @TimeZone VARCHAR(50),
        @DetailedTimeZone VARCHAR(50)

set @DetailedTimeZone = (SELECT  
    SYSDATETIMEOFFSET() AS SYSDATETIMEOFFSET ) 



DECLARE @CISDB TABLE
(
    TimeZone    NVARCHAR(100)
)

Insert Into @CISDB( TimeZone)
    VALUES ( 'UTC' + (SELECT SUBSTRING(@DetailedTimeZone , 29, 9) AS OFFSET))
    select * from @CISDB

END

1 个答案:

答案 0 :(得分:1)

此信息已保存到注册表中,您可以使用xp_regread

读取这些数据

所以我希望下一个查询对您有帮助:-

CREATE PROCEDURE [dbo].[UspGetTimeZone]
AS
SET NOCOUNT ON;

BEGIN

DECLARE @TimeStandared VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeStandared OUT

DECLARE @TimeZone VARCHAR(50),
        @keyname varchar(200)
set @keyname = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\' + @TimeStandared
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@keyname, 'Display',@TimeZone OUT
SELECT @TimeZone

END