как обрабатывать экономию дневного света?

#sql-server-2008

#sql-server-2008

Вопрос:

Я написал службу окон (C #), которая непрерывно извлекает данные из базы данных Oracle в базу данных Sql Server.

Служба окон запускается в бесконечном цикле и переходит в режим сна на i минуту после одного успешного запуска.

Каждый запуск службы окон я рассматриваю как задание, и для этого задания нет, я передаю 2 входных параметра даты / времени в oracle SP, которые извлекают все записи между 2 прошедшими датами,

Вот логика для передачи дат,

введите описание изображения здесь

Теперь, в режиме экономии дневного света, мои часы пересылаются на несколько часов вперед, затем я теряю данные за этот период.

Как справиться с этим сценарием сохранения дневного света, я генерирую дату начала / окончания из нижеприведенных SQL-запросов,

 DECLARE @startDate VARCHAR(20)
DECLARE @endDate VARCHAR(20)

IF EXISTS(SELECT 1 FROM dbo.tblImportAlertsJob(NOLOCK) WHERE JobStatus = 'Completed')
BEGIN
    SELECT @startDate = CONVERT(VARCHAR, DATEADD(ss, 1, InputEndDateTime), 112)   ' '   CONVERT(VARCHAR, DATEADD(ss, 1, InputEndDateTime), 8)
    FROM dbo.tblImportAlertsJob(NOLOCK)
    WHERE JobID  = (SELECT MAX(JobID) FROM dbo.tblImportAlertsJob(NOLOCK) WHERE JobStatus = 'Completed')
END
ELSE
BEGIN
    SELECT @startDate = CONVERT(VARCHAR, DATEADD(ss, -60, GETDATE()), 112)   ' '   CONVERT(VARCHAR, DATEADD(ss, -60, GETDATE()), 8)
END

SET @endDate = CONVERT(VARCHAR, GETDATE(), 112)   ' '   CONVERT(VARCHAR, GETDATE(), 8)

INSERT INTO dbo.tblImportAlertsJob(InputStartDateTime, InputEndDateTime) VALUES(@startDate, @endDate)

SELECT CAST(SCOPE_IDENTITY() AS BIGINT) AS 'JobId', @startDate AS 'StartDate', @endDate AS 'EndDate'
  

Комментарии:

1. in day light saving mode, I clock is forwarded 2 hour ahead … Я не знаю ни одной страны, где время меняется на 2 часа во время перехода на летнее время.

2. OP отредактирован… Я думаю, к 2.30 часам

3. Простой подход заключается в использовании времени UTC, которое не скачет.