У меня есть этот запрос, который правильно возвращает среднеевропейское время как +2 часа. Однако эти два часа ко времени не прибавляются. Как мне добавить эти два часа (или x часов в зависимости от часового пояса)?
DECLARE @targettimezone AS sysname = 'Central European Standard Time'
SELECT convert(datetime2,'2018-10-25T13:43:19.296Z') AT TIME ZONE @targettimezone;
SELECT convert(datetime2,convert(datetimeoffset,'2018-10-25T13:43:19.296Z') AT TIME ZONE @targettimezone);

Вы можете попробовать использовать datetimeoffset вместо datetime2.
Defines a date that is combined with a time of a day that has time zone awareness and is based on a 24-hour clock.
Затем конвертируйте datetimeoffset в DateTime, чтобы получить ожидаемый результат.
DECLARE @targettimezone AS sysname = 'Central European Standard Time'
SELECT cast(cast('2018-10-25T13:43:19.296Z' as datetimeoffset) AT TIME ZONE @targettimezone as datetime2);
Это все еще возвращается с битом +02:00, желательно ли это?
@AaronBertrand Хорошо, спасибо за указание на приведение к типу DateTime, снова могу это сделать.
Вам нужно зафиксировать смещение с помощью функции DATEPART в SQL Server, а затем применить его к своему времени в формате UTC.
DECLARE @utcDateTime DATETIME = '2018-10-25T13:43:19.296Z'
DECLARE @targetTimeZone AS SYSNAME = 'Central European Standard Time'
DECLARE @offsetMinutes INT
DECLARE @targetDateTime DATETIME
--Get the offset value in minutes
SET @offsetMinutes = DATEPART(tz, CONVERT(DATETIME2, @utcDateTime) AT TIME ZONE
@targettimezone)
--Add the offset to the UTC time
SET @targetDateTime = DATEADD(MINUTE, @offsetMinutes, @utcDateTime)
--No you have the value in the target time zone
SELECT @targetDateTime
Давайте немного поможем движку:
DECLARE @targettimezone AS sysname = 'Central European Standard Time'
SELECT convert(datetime2,'2018-10-25T13:43:19.296Z')
AT TIME ZONE 'UTC'
AT TIME ZONE @targettimezone;
Я бы ожидал, что формат, который вы указали для своей метки времени, изначально будет интерпретироваться как UTC, но, похоже, это не так. Таким образом, вышесказанное прямо об этом. ¯ \ _ (ツ) _ / ¯
Какая версия SQL Server у вас установлена?