2017-02-13 124 views
0

我在我的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#代碼? –

回答

0

使用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