Привет, может кто-то мне помочь с моей функцией. Я получил эту ошибкуФункция для преобразования UTC в CET на сервере sql
Добавление значения в столбец 'datetime2' вызвало переполнение.
Вот моя функция:
CREATE FUNCTION [dbo].[udf_ConvertfromUTCtoCET] (@UTCDate AS DATETIME2(7))
RETURNS DATETIME2(7)
AS
BEGIN
DECLARE @DstStart datetime2(7)
DECLARE @DstEnd datetime2(7)
DECLARE @CetDate datetime2(7)
SELECT @DstStart = DATEADD(hour, 1,DATEADD(day, DATEDIFF(day, 0, '31/Mar' + CAST(YEAR(@UTCDate) AS varchar)) -
(DATEDIFF(day, 6, '31/Mar' + CAST(YEAR(@UTCDate) AS varchar)) % 7), 0)),
@DstEnd = DATEADD(hour, 1,DATEADD(day, DATEDIFF(day, 0, '31/Oct' + CAST(YEAR(@UTCDate) AS varchar)) -
(DATEDIFF(day, 6, '31/Oct' + CAST(YEAR(@UTCDate) AS varchar)) % 7), 0))
SELECT @CetDate = CASE WHEN @UTCDate <= @DstEnd AND @UTCDate >= @DstStart
THEN DATEADD(hour, +2, @UTCDate)
ELSE DATEADD(hour, +1, @UTCDate) END
RETURN @CetDate
END
я в датах WarehoureMgmt.DimTime Tabel в формате datetime2 (7), например
9999-12-31 00:00:00.0000000
0001-01-01 00:00:00.0000000
2012-01-01 00:00:00.0000000
2012-01-01 01:00:00.0000000
2012-01-01 02:00:00.0000000
и вот что я хочу, чтобы выбрать
select [DateTime],[dbo].[udf_ConvertfromUTCtoCET] ([DateTime])
from WarehouseMgmt.DimTime
Вставьте некоторую логику, которая запретит коду пытаться установить любую из ваших переменных в значение, которое вызовет переполнение. –
Возможный дубликат [sql server convert datetime в другой часовой пояс?] (Http://stackoverflow.com/questions/19613638/sql-server-convert-datetime-into-another-timezone) – TobyLL
Это не дубликат. У меня есть даты db в часовом поясе UTC, и я хочу поместить их в CET, но также есть летние и зимние изменения, поэтому я также должен их правильно преобразовать – Fox