📅  最后修改于: 2023-12-03 14:44:25.332000             🧑  作者: Mango
在 Ms SQL 中,可以使用以下代码为服务器或数据库设置时区:
-- 设置服务器时区
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'timezone', '<timezone>';
GO
RECONFIGURE;
GO
-- 设置数据库时区
ALTER DATABASE <database_name> SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
ALTER DATABASE <database_name> SET TRUSTWORTHY ON;
GO
ALTER DATABASE <database_name> SET ANSI_NULLS ON;
GO
ALTER DATABASE <database_name> SET QUOTED_IDENTIFIER ON;
GO
CREATE ASSEMBLY [System.TimeZoneInfo] from 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Core.dll' WITH PERMISSION_SET = UNSAFE;
GO
CREATE FUNCTION [dbo].[fn_GetCurrentTimeZone]()
RETURNS [nvarchar](250) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [System.TimeZoneInfo].[System.TimeZoneInfo]::get_LocalTimeZone().ToString();
GO
ALTER DATABASE <database_name> SET MULTI_USER;
GO
在上面的代码中,<timezone>
应替换为您所需的时区,如东八区可设置为 'China Standard Time'
。在设置完毕后,您可以通过以下代码来验证已经正确设置了时区:
SELECT SYSDATETIMEOFFSET() AT TIME ZONE '<timezone>' AS CurrentDateTime;
其中,<timezone>
应替换为您所设置的时区名称。