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
Instruções do exercício
- Preencha o nome da função
TRY_XXX()que falta dentro da expressão de tabela comumEventDates. - Converta as datas de evento
EventDateOffsetpara'UTC'. Chame essa saída deEventDateUTC. - Converta as datas de evento
EventDateOffsetpara'US Eastern Standard Time'usandoAT TIME ZONE. Chame essa saída deEventDateUSEast.
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;