我想使用存储过程以以下格式获取计算机的时区,但我所管理的只是UTC + 5.30部分。
我到目前为止的进展:
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
答案 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