В моей базе данных есть значения даты, сохраненные в часовом поясе GMT в формате int. Я пытаюсь преобразовать дату в местный часовой пояс, но проблема возникает, когда дата является прошлой датой. Например, в моем случае смещение на дату 1 декабря 2012 года будет -5, а на 15 июня 2010 года будет -4 на летнее время. Я сейчас в EST.GET UTC Дата последней даты
Так что мне нужно знать, что было датой UTC предыдущей даты, чтобы определить, будет ли -4 или -5 смещением для этой даты.
SELECT Test_Number,
Last_Test_Date, dateAdd(hour,
datediff(hour, GETUTCDATE(), getdate()), --UTC offset
dateadd(second, Last_Test_Date, '1/1/1970 12:00 AM'))
FROM TestTable
Я не совсем уверен, возможно ли это. Любое мнение?
Используйте таблицу календаря. Вы не можете использовать сегодняшнее смещение для вычисления смещения. в прошлом. Тем более, что даты различаются с каждым годом, а также изменяются фактические правила. Смещения в конце ДСТ 10 лет назад, например, отличаются от прошлого года. –
Не зависеть от кода времени выполнения Windows, если вы серьезно относитесь к этому. Старая версия поддерживала только один набор часовых поясов UTC в часовом поясе, я думаю, что он по-прежнему поддерживает только два способа в последних версиях. –