有人可以帮助我使用sql。
我有一个包含字段的表:
ID(guid),DocumentNumber(varchar),RefDocumentNumber(varchar),DocumentDate(datetime)。
文档已配对,意思是:
(原始文件)
(参考文件)
问题是我有一些情况,参考文件有更年轻的日期"。所以我需要用DATEADD函数更新它的日期(加60秒)。
这是由于服务器时间错误而发生的......
有人可以帮助我:
感谢。
答案 0 :(得分:2)
这样的事情:
UPDATE OD SET OD.Date = RD.Date
FROM Dokument OD
JOIN Dokument RD ON OD.DocumentNumber = RD.RefDocumentNumber
WHERE OD.Date < RD.Date
或:
UPDATE OD SET OD.Date = DATEADD(second,-120,OD.Date)
FROM Dokument OD
JOIN Dokument RD ON OD.DocumentNumber = RD.RefDocumentNumber
WHERE OD.Date < RD.Date
只有select语句:
Select DISTINCT OD.Id
FROM Dokument OD
JOIN Dokument RD ON OD.DocumentNumber = RD.RefDocumentNumber
WHERE OD.Date < RD.Date
答案 1 :(得分:1)
您可以使用游标迭代所有记录:
DECLARE curYoungRecords CURSOR FOR
SELECT a.Id, a.DocumentDate
FROM Documents a
INNER JOIN Documents b ON b.DocumentNumber = a.RefDocumentNumber
AND b.DocumentDate < a.DocumentDate
DECLARE @DocId UNIQUEIDENTIFIER
DECLARE @DocDate DATETIME
OPEN curYoungRecords
FETCH NEXT FROM curYoungRecords INTO @DocId, @DocDate
WHILE @@FETCH_STATUS = 0
BEGIN
-- Make record "older" by 120 seconds
UPDATE Documents
SET DocumentDate = DATEADD(second, -120, @DocDate)
WHERE Id = @DocId
FETCH NEXT FROM curYoungRecords INTO @DocId, @DocDate
END
CLOSE curYoungRecords
DEALLOCATE curYoungRecords
INNER JOIN
只确保&#34;孩子&#34;包含文件日期比父母年轻的文件。