2016-09-26 3 views
1

У меня есть определенный запрос, который получает производное значениеУдалить отрицательные значения

select datediff(minute, date_field_1, date_field_2) as date_diff from table_name; 

Проблема заключается в том, что некоторые из значений в результате может быть отрицательными, как date_field_1 может быть больше, чем date_field_2 в некоторых случаях.

Таким образом, это приводит к отрицательному, а также положительным значениям в итоговой таблице.

В любом случае, чтобы поместить некоторые значения по умолчанию или опустить и указать нулевые или нулевые значения этих отрицательных вычисленных значений?

Использование красного смещения.

+0

ли один из наших решений решить вашу проблему? – rbr94

ответ

2

Одним из способов уловить отрицательные значения было бы использование CASE WHEN. Он проверяет ваш DateDiff ли меньше, чем 0. я предложил 0 в качестве значения по умолчанию:

SELECT 
    CASE WHEN datediff(minute, date_field_1, date_field_2) < 0 
    THEN 0 
    ELSE datediff(minute, date_field_1, date_field_2) END as date_diff 
FROM table_name; 
1

Это то, что вы хотите?

select (case when date_field_1 >= date_field_2 
      then datediff(minute, date_field_1, date_field_2) 
      else 0 
     end) as date_diff 
from table_name;