【发布时间】:2019-11-12 16:37:43
【问题描述】:
我在作业中有以下查询,它计划在 L-V 的每个小时运行。
在 FCH_FIN 字段中的表中所做的所有记录都有一个准确的时间,例如:7:00:00 到 19:00:00。
然后我创建一个临时表并从我的原始表中传递数据,我想通过我的临时表来获取使用 GETDATE() 的系统时间与 FCH_FIN 中记录的时间之间的时间差字段,如果小于则将 active 更新为 0。
查询:
DECLARE @count INT;
DECLARE @fch2 DATETIME;
DECLARE @seconds INT;
CREATE table #Suple
(
ID INT PRIMARY KEY NOT NULL,
ACTIVO NCHAR(10) NOT NULL,
FCH_INICIO DATETIME NOT NULL,
FCH_FIN DATETIME NOT NULL
);
INSERT INTO #Suple
SELECT *
FROM Original
WHERE ACTIVO = 1
AND CONVERT(DATE, FCH_FIN) = CONVERT(DATE, GETDATE());
SELECT @count = COUNT(*) FROM #Suple;
WHILE @count > 0
BEGIN
SELECT
@seconds = DATEDIFF(S, GETDATE(),FCH_FIN)
FROM
#Suple
WHERE
ACTIVO = 1
AND CONVERT(DATE, FCH_FIN) = CONVERT(DATE, GETDATE())
IF (@seconds < 3)
UPDATE Original
SET ACTIVO = 0
DELETE TOP(1) FROM #Suple
SET @count = (SELECT COUNT(*) FROM #Suple);
END
DROP TABLE #Suple
此查询不会更新任何内容
表:
有人可以帮我吗?
【问题讨论】:
标签: sql sql-server jobs