您需要處理模糊的時代,作爲@Damien_The_Unbeliever提到,但在這裏是如何計算的偏移量(假設你的日期> = 1998)
SELECT YourDate,
CASE WHEN YourDate < LocalSummerTimeStart
OR YourDate > LocalSummerTimeEnd
THEN 1
ELSE 2
END AS Offset
FROM YourTable
CROSS APPLY (
SELECT YEAR(YourDate) * 10000 + 300 + (31 - ((((5 * YEAR(Yourdate))/4) + 4) % 7)) AS UTCSummerTimeStartDate
,YEAR(YourDate) * 10000 + 1000 + (31 - ((((5 * YEAR(YourDate))/4) + 1) % 7)) AS UTCSummerTimeEndDate
) AS CA1
CROSS APPLY (
SELECT DATEADD(hour, 2, CONVERT(datetime, CONVERT(varchar(8), UTCSummerTimeStartDate), 112)) AS LocalSummerTimeStart
,DATEADD(hour, 3, CONVERT(datetime, CONVERT(varchar(8), UTCSummerTimeEndDate), 112)) AS LocalSummerTimeEnd
) AS CA2
european summer time formulas
爲什麼是正確的偏移對於4月13日'+02:00'和2月13日'+01:00'?你是什麼意思'當前抵消'? – chiccodoro
你想用模糊的時間做什麼? (即你想要什麼'2013-10-27T02:30:00'?) –
在我正在使用西班牙時區的例子上,所以時間變化是(今年)在3月30日。這是一個例子此更改之前和之後的日期。 – alvinEMosby