#sql #sql-server #azure-sql-database
#sql #sql-сервер #azure-sql-database
Вопрос:
Я попытался сделать следующее
(SELECT GETUTCDATE() AT TIME ZONE 'Central European Standard Time')
Однако я получаю что-то вроде этого
2016-10-17 16:35:25.260 02:00
это время UTC, за которым следует 02:00.(понятия не имею, что это такое)
Как мне преобразовать это в CET, который должен быть 18:35:25.2560
Летнее время в Центральной Европе.
Комментарии:
1. 02:00 указывает, что время смещено от UTC на 2 часа, как и для CEST на данный момент.
2. Эта функция может быть не полностью готова . Это наименьшее утверждение, которое я мог придумать, чтобы получить то, что вы хотите, и я должен верить, что это должно быть проще, чем это:
SELECT CONVERT(datetime2, SWITCHOFFSET(CONVERT(datetimeoffset, SYSUTCDATETIME() AT TIME ZONE N'Central European Standard Time'), -DATEPART(TZ,SYSDATETIMEOFFSET())), 0);
3. Для подхода, который я использовал ранее В TIME ZONE: часть 1 , часть 2 , часть 3 .
4.
AT TIME ZONE
при применении к datetime значение не изменяется, просто преобразуется в datetimeoffset . Вы должны обратитьсяAT TIME ZONE
к datetimeoffset, чтобы изменить значение. Итак, в вашем случае что-то вроде(GETUTCDATE() AT TIME ZONE ' 00:00') AT TIME ZONE 'Central European Standard Time'
Ответ №1:
Просто наткнулся на ту же проблему, что и у вас. Будет работать следующее!
SELECT (GETUTCDATE() AT TIME ZONE 'UTC') AT TIME ZONE 'Central European Standard Time'