ComeçarComece de graça

Converter dados importados em datas com fusos horários

Agora que vimos as três funções de conversão com verificação de tipo, podemos começar a aplicá‑las em conjuntos de dados reais. Neste cenário, vamos fazer o parsing de dados da tabela dbo.ImportedTime. Usamos um aplicativo diferente para carregar dados nessa tabela e já olhamos para ela em um exercício anterior. Desta vez, vamos recuperar dados de todas as linhas, não apenas das que o aplicativo de importação marcou como válidas.

Este exercício faz parte do curso

Análise de Séries Temporais no SQL Server

Ver curso

Instruções do exercício

  • Preencha o nome da função TRY_XXX() que falta dentro da expressão de tabela comum EventDates.
  • Converta as datas de evento EventDateOffset para 'UTC'. Chame essa saída de EventDateUTC.
  • Converta as datas de evento EventDateOffset para 'US Eastern Standard Time' usando AT TIME ZONE. Chame essa saída de EventDateUSEast.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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;
Editar e executar o código