Inizia subitoInizia gratis

Converti i dati importati in date con fusi orari

Ora che abbiamo visto le tre funzioni di conversione type-safe, possiamo iniziare ad applicarle a insiemi di dati reali. In questo scenario, analizzeremo i dati dalla tabella dbo.ImportedTime. Abbiamo usato un'applicazione diversa per caricare i dati in questa tabella e li abbiamo già osservati in un esercizio precedente. Questa volta, recupereremo i dati per tutte le righe, non solo per quelle che l'applicazione di importazione ha contrassegnato come valide.

Questo esercizio fa parte del corso

Analisi delle serie temporali in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Compila il nome della funzione TRY_XXX() mancante all'interno della common table expression EventDates.
  • Converti le date evento di EventDateOffset in 'UTC'. Chiama questo output EventDateUTC.
  • Converti le date evento di EventDateOffset in 'US Eastern Standard Time' usando AT TIME ZONE. Chiama questo output EventDateUSEast.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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;
Modifica ed esegui il codice