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
)
我目前正在努力解决以下问题:
我有一个选择 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
)