Как выбрать datetime, где isnull значение из SQL Server 2012? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть tb_user_log для сбора истории входа и выхода пользователя из системы, и у нее есть два столбца (timein и timeout), но если системная ошибка, то значение тайм-аута равно нулю.

Мне нужновыберите его и выведите на экран даже null или нет null.

У меня есть код ниже, но он возвращается только в том случае, если значение не равно нулю, и скрывает повторный код, где время ожидания равно нулю:

select *    
from tb_user_log 
where cast(Logintime as date) >= '2018-05-16' 
  and (cast(Logouttime as date) <= '2018-05-16' or
       cast(logouttime as date) <= '') 
order by id desc

Есть ли неправильный пункт в моем коде?Он не возвращает нулевой повторный код.

Или какой-то лучший способ выбрать его?Мой тип данных datetime, и я использую C # + SQL Server 2012.

Спасибо.

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете проверить Logouttime против NULL:

select *    
from tb_user_log 
where cast(Logintime as date) >= '2018-05-16' 
  and (cast(Logouttime as date) <= '2018-05-16' or logouttime is null) 
order by id desc

Или вы можете обработать NULL значение в условии:

select *    
from tb_user_log 
where cast(Logintime as date) >= '2018-05-16' 
  and (cast(isnull(Logouttime,'') as date) <= '2018-05-16') 
order by id desc

В обоих случаях в результатах вы также получите строки с logouttime is null

...