DateTimeDFF()返回负值

时间:2017-02-13 06:25:04

标签: sql sql-server tsql

我在SQL Server视图中有以下代码,我希望在c#中使用以在TimeRemaining = 0时对某些内容进行更改,但有时我看到TimeRemainingTimeToBeClosed通过时,SQL Server中的列变为负值。如果用户在TimeToBeClosed过去后必须登录,我担心这可能不符合我的目的。

那么当它变为零时如何计算停止?

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

1 个答案:

答案 0 :(得分: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