Zacznij terazZacznij za darmo

Konwersja zaimportowanych danych na daty ze strefami czasowymi

Poznaliśmy już trzy funkcje konwersji z obsługą błędów – teraz czas zastosować je w praktyce. W tym ćwiczeniu przetworzymy dane z tabeli dbo.ImportedTime. Dane do tej tabeli zostały załadowane przez inną aplikację, z którą zetknęliśmy się we wcześniejszym ćwiczeniu. Tym razem pobierzemy dane ze wszystkich wierszy – nie tylko tych oznaczonych przez aplikację importującą jako poprawne.

To ćwiczenie jest częścią kursu

Analiza szeregów czasowych w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij brakującą nazwę funkcji TRY_XXX() wewnątrz wspólnego wyrażenia tabelarycznego EventDates.
  • Przekształć daty EventDateOffset na strefę 'UTC'. Nadaj tej kolumnie nazwę EventDateUTC.
  • Przekształć daty EventDateOffset na strefę 'US Eastern Standard Time' przy użyciu AT TIME ZONE. Nadaj tej kolumnie nazwę EventDateUSEast.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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;
Edytuj i uruchom kod