Мне нужно получить временные метки из таблиц Axapta в TSQL
без учета часовой пояс и/или смещения дневного света-смещения за каждый раз, например, из таблицы JMGABSENCECALENDAR
.UTC datetime offset
Принимая this в качестве первоначального подхода и сохраняя this, он работает в настоящее время. Но, считывая данные из таблицы, ссылаясь на другие временные метки, решение, представленное во второй ссылке, не получает информацию о дневном свете в указанное время.
Например:
добавить отсутствие на сегодняшний день (2012-01-07). Теперь, используя SSMS, чтение этого набора данных приводит к
STARTTIME = 2013-01-06 23:00:00.000
и EndTime = 2013-01-07 23:00:00.000
Это нормально, и я могу использовать
DECLARE @UTCOffset SMALLINT
EXEC master..xp_regread
'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'ActiveTimeBias',
@UTCOffset OUTPUT
SELECT DATEADD(MINUTE, @UTCOffset, GETDATE()) AS UTCTime
, чтобы удалить смещение. Это работает отлично на фактические даты, но как правильно удалить офсет за прошлые или будущие времена, например 2012-07-01
?
Здесь смещение составляет 120 минут, из-за летнего времени. Чтение Reg-Value возвращает только текущий офсет.
Задача должна быть решена в TSQL 2008
Спасибо за ваш ответ - но таблица поиска не была моим первым выбором. Даты изменения UTC могут меняться от года к году, и я не хочу иметь таблицу anothe, которая нуждается в ежегодной поддержке;) +1 для информации, которую getutcdate() может заменить исправление! – Nico
Нико, что я имел в виду с таким столом, так это то, что вы можете его генерировать один раз и использовать его в течение многих лет. В моем случае я мог бы создать таблицу, которая дала бы мне все периоды utc в течение 15 лет, что было более чем достаточно для этого клиента. –