Преобразование импортированных данных в даты с часовыми поясами
Теперь, когда мы познакомились с тремя типобезопасными функциями преобразования, можно применить их к реальным наборам данных. В этом сценарии мы будем разбирать данные из таблицы dbo.ImportedTime. Данные в эту таблицу загружались с помощью другого приложения, и мы уже рассматривали её в предыдущем упражнении. На этот раз мы извлечём данные для всех строк, а не только тех, которые приложение для импорта пометило как допустимые.
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Введите недостающее имя функции
TRY_XXX()внутри обобщённого табличного выраженияEventDates. - Преобразуйте даты событий
EventDateOffsetв часовой пояс'UTC'. Назовите этот столбецEventDateUTC. - Преобразуйте даты событий
EventDateOffsetв часовой пояс'US Eastern Standard Time'с помощьюAT TIME ZONE. Назовите этот столбецEventDateUSEast.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
WITH EventDates AS
(
SELECT
-- Fill in the missing try-conversion function
___(DATETIME2(3), it.EventDate) AT TIME ZONE it.TimeZone AS EventDateOffset,
it.TimeZone
FROM dbo.ImportedTime it
INNER JOIN sys.time_zone_info tzi
ON it.TimeZone = tzi.name
)
SELECT
-- Fill in the approppriate event date to convert
CONVERT(NVARCHAR(50), ed.EventDateOffset) AS EventDateOffsetString,
CONVERT(DATETIME2(0), ed.EventDateOffset) AS EventDateLocal,
ed.TimeZone,
-- Convert from a DATETIMEOFFSET to DATETIME at UTC
CAST(ed.EventDateOffset AT TIME ZONE '___' AS DATETIME2(0)) AS EventDateUTC,
-- Convert from a DATETIMEOFFSET to DATETIME with time zone
CAST(ed.EventDateOffset ___ ___ ___ 'US Eastern Standard Time' AS DATETIME2(0)) AS EventDateUSEast
FROM EventDates ed;