Konvertera importerad data till datum med tidszoner
Nu när vi har gått igenom de tre typssäkra konversionsfunktionerna kan vi börja tillämpa dem på riktiga datamängder. I det här scenariot kommer vi att tolka data från tabellen dbo.ImportedTime. Vi använde ett annat program för att läsa in data till den tabellen och tittade på den i en tidigare övning. Den här gången hämtar vi data för alla rader – inte bara de som importprogrammet markerade som giltiga.
Den här övningen är en del av kursen
Tidsserieanalys i SQL Server
Övningsinstruktioner
- Fyll i det saknade funktionsnamnet
TRY_XXX()inuti det gemensamma tabelluttrycketEventDates. - Konvertera händelsedatumen i
EventDateOffsettill'UTC'. Kalla utdatanEventDateUTC. - Konvertera händelsedatumen i
EventDateOffsettill'US Eastern Standard Time'med hjälp avAT TIME ZONE. Kalla utdatanEventDateUSEast.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;