Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Fyll i det saknade funktionsnamnet TRY_XXX() inuti det gemensamma tabelluttrycket EventDates.
  • Konvertera händelsedatumen i EventDateOffset till 'UTC'. Kalla utdatan EventDateUTC.
  • Konvertera händelsedatumen i EventDateOffset till 'US Eastern Standard Time' med hjälp av AT TIME ZONE. Kalla utdatan EventDateUSEast.

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;
Redigera och kör kod