2017-02-13 2 views
0

У меня есть код ниже в моем представлении SQL Server, который я бы хотел использовать в C#, чтобы произвести изменение на что-то, когда TimeRemaining is = 0, но некоторое время я вижу, что столбец TimeRemaining в SQL Server переходит в отрицательное значение, когда TimeToBeClosed прошел. Я боюсь, что это может не служить моей цели, если пользователь должен зарегистрироваться, когда 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