İçe aktarılan verileri saat dilimleriyle tarihlere dönüştür
Artık üç tür güvenli dönüştürme işlevini gördüğümüze göre, bunları gerçek veri kümeleri üzerinde uygulamaya başlayabiliriz. Bu senaryoda, dbo.ImportedTime tablosundan verileri ayrıştıracağız. Bu tabloya verileri yüklemek için farklı bir uygulama kullandık ve bunu önceki bir egzersizde incelemiştik. Bu kez, yalnızca içe aktarma uygulamasının geçerli olarak işaretledikleri değil, tüm satırlar için veri getireceğiz.
Bu egzersiz, kursun bir parçasıdır
SQL Server'da Zaman Serisi Analizi
Egzersiz talimatları
EventDatesortak tablo ifadesi içinde eksik olanTRY_XXX()işlev adını doldur.EventDateOffsetolay tarihlerini'UTC''ye dönüştür. Bu çıktıyıEventDateUTColarak adlandır.AT TIME ZONEkullanarakEventDateOffsetolay tarihlerini'US Eastern Standard Time'saat dilimine dönüştür. Bu çıktıyıEventDateUSEastolarak adlandır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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;