SQL Сервер: фильтр по элементу времени в формате datetime - PullRequest
0 голосов
/ 06 января 2020

В настоящее время я борюсь со следующим:

У меня есть запрос SQL, который выбирает столбец datetime. Затем я выполняю преобразование, чтобы получить только время.

bc.StartTime as startdatetime,
CONVERT(TIME,bc.starttime) as starttime,

Вывод выглядит так:

startdatetime              starttime
-------------------------------------------
2019-04-14 19:13:53.000    19:13:53.0000000
2019-04-15 00:00:00.000    00:00:00.0000000

Пока все хорошо, но сейчас я хочу отфильтровать время «00: 00: 00.0000000».

Я пробовал несколько вещей, таких как:

AND CONVERT (time, bc.starttime) != '00:00:00.0000000' 
AND bc.starttime NOT LIKE '%00:00:00.000'

, но ни одна из них не работает.

starttime также содержит "NULL" - которые я хотел бы сохранить в своих результатах.

Есть ли кто-нибудь, кто может мне помочь?

Редактировать:

Спасибо за ваш вклад всем!

У меня 4 колонки; actdatetime, bcstarttime, дата и время. Я попытаюсь объяснить, что я хочу:

Столбец даты и времени - это преобразованные столбцы из столбца bcstarttime.

Но я хочу отфильтровать время "00:00:00" в мои результаты. Поскольку этот столбец является псевдонимом, он не хочет быть объявленным в моем предложении "WHERE".

Если я сделаю следующее:

WHERE bc.StartTime != '00:00:00'

Тогда он также "уничтожит" мои значения NULL (которые я хочу сохранить в результате).

Вероятно, это newb ie вещь, которую я пропускаю ....

1 Ответ

1 голос
/ 06 января 2020

Как насчет немного другого подхода?

where (convert(date, bc.starttime) <> bc.starttime or
       startdatetime is null
      )

То есть есть что-то, кроме компонента даты.

Или вы можете сделать это, используя времена:

where (convert(time, bc.starttime) <> '00:00:00.0000000' or
       bc.starttime is null
      )
...