Перетворення імпортованих даних на дати з часовими поясами
Тепер, коли ми розглянули три безпечні щодо типів функції перетворення, можна почати застосовувати їх до реальних наборів даних. У цьому завданні ми розбиратимемо дані з таблиці 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;