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
Istruzioni dell'esercizio
- Compila il nome della funzione
TRY_XXX()mancante all'interno della common table expressionEventDates. - Converti le date evento di
EventDateOffsetin'UTC'. Chiama questo outputEventDateUTC. - Converti le date evento di
EventDateOffsetin'US Eastern Standard Time'usandoAT TIME ZONE. Chiama questo outputEventDateUSEast.
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;