DateTimeDFF()返回负值

问题描述:

我在我的SQL Server视图中有以下代码,我想在c#中使用以在TimeRemaining = 0时对某些内容进行更改,但有时我会看到TimeRemaining列当TimeToBeClosed已通过时,SQL Server将变为负值。我担心如果用户在TimeToBeClosed通过时必须登录,这可能无法达到我的目的。DateTimeDFF()返回负值

那么我该如何计算停止,当它达到零?

SELECT 
    Id, StartTime, 
    DATEADD(hh, 02, StartTime) AS TimeToBeClosed, 
    DATEDIFF(hh, GETDATE(), DATEADD(hh, 02, StartTime)) AS TimeRemaining 
FROM 
    dbo.MyTable 
+0

那么,你想要什么确切的行为?你需要一个SQL更新或C#代码? –

使用CASE声明可以为所有负时间值取0。

SELECT Id, StartTime, DATEADD(hh, 02, StartTime) AS TimeToBeClosed, 
CASE 
WHEN DATEDIFF(hh, GETDATE(),DATEADD(hh, 02, StartTime))>0 
    THEN DATEDIFF(hh, GETDATE(),DATEADD(hh, 02, StartTime)) 
ELSE 0 
END AS TimeRemaining 
FROM dbo.MyTable