Převod importovaných dat na data s časovými pásmy
Teď, když jsme si prošli tři typově bezpečné funkce pro převod, můžeme je začít používat na skutečných datech. V tomto scénáři budeme zpracovávat data z tabulky dbo.ImportedTime. Tuto tabulku jsme naplnili pomocí jiné aplikace a prohlédli jsme si ji v předchozím cvičení. Tentokrát načteme data ze všech řádků, nejen z těch, které importovací aplikace označila jako platné.
Toto cvičení je součástí kurzu
Time Series Analysis in SQL Server
Pokyny k cvičení
- Doplň chybějící název funkce
TRY_XXX()do společného tabulkového výrazuEventDates. - Převeď data událostí
EventDateOffsetdo časového pásma'UTC'. Výstup pojmenujEventDateUTC. - Převeď data událostí
EventDateOffsetdo časového pásma'US Eastern Standard Time'pomocíAT TIME ZONE. Výstup pojmenujEventDateUSEast.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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;