C1 | Start_Time | Minutes
---+-----------------+---------
I1 | 8/6/17 23:50 PM | 40
我正在使用SQL Server,这就是我的表格。 Start_Time
机器'8/6/17 23:50 PM'
继续运行40分钟。当机器停止时,它将是第二天。在这种情况下,结束时间为8/7/17
。现在我需要将溢出物随着时间的推移分开,并将第二天作为新条目。
结果应该像
C1 | Time | Minutes
----+-------------------+---------
I1 | 8/6/17 11:50 PM | 10
I1 | 8/7/17 12:00 AM | 30
日期和分钟必须分成不同的行。
答案 0 :(得分:0)
您可以尝试使用插入查询来检查当天Minutes
与给定Start_Time
的剩余分钟之间的差异是否大于零。如果是这样,那么请插入具有该差异的插入。
INSERT INTO yourTable (C1, Start_Time, Minutes)
SELECT
C1,
DATEADD(d, 1, DATEDIFF(d, 0, Start_Time)),
Minutes - DATEDIFF(mi, Start_Time, DATEADD(d, 1, DATEDIFF(d, 0, Start_Time)))
FROM yourTable
WHERE
Minutes - DATEDIFF(mi, Start_Time, DATEADD(d, 1, DATEDIFF(d, 0, Start_Time))) > 0;
按照以下链接进行演示,演示插入逻辑是否正常工作。
修改强>
我刚刚意识到您还需要一个更新查询来调整受上述插入影响的每条记录的剩余分钟数。你可以用这个:
UPDATE yourTable
SET Minutes = DATEDIFF(mi, Start_Time, DATEADD(d, 1, DATEDIFF(d, 0, Start_Time)))
WHERE
Minutes - DATEDIFF(mi, Start_Time, DATEADD(d, 1, DATEDIFF(d, 0, Start_Time))) > 0;