НачатьНачать бесплатно

Преобразование импортированных данных в даты с часовыми поясами

Теперь, когда мы познакомились с тремя типобезопасными функциями преобразования, можно применить их к реальным наборам данных. В этом сценарии мы будем разбирать данные из таблицы 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;
Редактировать и запускать код