SQL 服务器:过滤日期时间格式的时间元素

SQL Server : filter on time element in datetime format

我目前正在努力解决以下问题:

我有一个选择 datetime 列的 SQL 查询。接下来,我进行转换以仅获取时间。

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'

但其中 none 个在工作。

starttime 还包含 "NULL" - 我想保留在我的结果中。

有没有人可以帮助我?

编辑:

感谢大家的贡献!

我有 4 列; actdatetime、bcstarttime、日期和时间。 我会尽力解释我想要的:

日期和时间列是 bcstarttime 列的转换列。

但我想过滤掉结果中的“00:00:00”时间。 因为此列是别名,所以它不想在我的 "WHERE" 子句中声明。

如果我执行以下操作:

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

然后它也 'destroys' 我的 NULL 值(我想保留在结果中)。

这可能是我忽略的新手东西....

稍微不同的方法怎么样?

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
      )