Azure SQL - 将时区转换为 'Central Standard Time'?

Azure SQL - Convert time zone to 'Central Standard Time'?

服务器时间是 'UTC',由于我的数据库是 Azure SQL,所以无法更改。我知道你可以转换到其他时区。但是,我不确定如何正确应用它。

简而言之。我需要能够根据 'start date' 但按中部标准时间进行工作。

我确实注释掉了我尝试过的地方。我的问题是,我不确定如何将偏移量应用到 'Start Date' 以得到前端 return 的内容。

'WHERE' 语句在技术上仅适用于 return“今天的工作”,但是 returns 基于 UTC 时间,这对在 Central Standard 中使用它的人不起作用时区。我该如何正确抵消它?

非常感谢您的帮助。

begin
--declare @dto datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-6:00');
--DECLARE @dto datetimeoffset
--SET @dto = (SELECT GETUTCDATE() AT TIME ZONE 'Central Standard Time')
--SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(), '-05:00')

declare @today datetimeoffset;
--set @today = switchoffset (convert(time, getdate()), '-05:00');
set @today = getdate();

SELECT dbo.Projects.ProjectID, dbo.Projects.ProjectName, dbo.Jobs.JobID, dbo.Jobs.Status, dbo.Jobs.StartDate, dbo.Jobs.EndDate, dbo.Jobs.CompletedDate, dbo.JobType.JobTypeID, dbo.JobType.JobTypeDescription
FROM dbo.Jobs INNER JOIN dbo.Projects ON dbo.Jobs.ProjectID = dbo.Projects.ProjectID
INNER JOIN dbo.JobType ON dbo.Jobs.JobTypeID = dbo.JobType.JobTypeID

WHERE convert(varchar(10), StartDate, 102) 
    = convert(varchar(10), @today, 102)

ORDER BY JobID DESC

End

Azure SQL 数据库始终遵循 UTC。如果需要转换 non-UTC 时区中的日期和时间信息,请在 Azure SQL 数据库中使用 AT TIME ZONE

AT TIME ZONE 将输入日期转换为目标时区。它 returns 目标时区的 datetimeoffset 值。

查询:

declare @current_cst datetimeoffset;
set @current_cst = (SELECT getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Central Standard Time')

declare @current_utc datetimeoffset;
set @current_utc = getutcdate();

--retunrs datetimeoffset format
select @current_utc current_utc, @current_cst current_cst 

--retunrs 102 format(yyyy.mm.dd)
select convert(varchar(10), @current_utc, 102) as current_utc, convert(varchar(10), @current_cst, 102) as current_cst 

Note: A list of installed time zones are available in sys.time_zone_info view.