我编写了一个窗口服务(C#),它不断将数据从Oracle数据库提取到Sql Server数据库。
窗口服务在无限循环中运行,并在一次成功运行后休眠一小时。
每次运行窗口服务,我都视为Job和那个Job No我将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'