Convertește datele importate în date cu fus orar
Acum că am văzut cele trei funcții de conversie sigure la nivel de tip, putem începe să le aplicăm pe seturi de date reale. În acest scenariu, vom analiza datele din tabelul dbo.ImportedTime. Am folosit o altă aplicație pentru a încărca datele din acest tabel și le-am examinat într-un exercițiu anterior. De data aceasta, vom extrage date pentru toate rândurile, nu doar pentru cele marcate ca valide de aplicația de import.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în SQL Server
Instrucțiuni pentru exercițiu
- Completează numele funcției
TRY_XXX()lipsă din expresia de tip tabel comunEventDates. - Convertește datele evenimentului
EventDateOffsetla'UTC'. Numește această coloanăEventDateUTC. - Convertește datele evenimentului
EventDateOffsetla'US Eastern Standard Time'folosindAT TIME ZONE. Numește această coloanăEventDateUSEast.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;