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
Instrukcje do ćwiczenia
- Uzupełnij brakującą nazwę funkcji
TRY_XXX()wewnątrz wspólnego wyrażenia tabelarycznegoEventDates. - Przekształć daty
EventDateOffsetna strefę'UTC'. Nadaj tej kolumnie nazwęEventDateUTC. - Przekształć daty
EventDateOffsetna strefę'US Eastern Standard Time'przy użyciuAT 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;