SQL服务器 - 上日期时间

问题描述:

SELECT这是一个非常简单的任务,但我似乎无法正确执行SELECTSQL服务器 - 上日期时间

[Date] 
2014-10-02 00:00:00.000 
2014-10-02 16:54:00.000 

SELECT * FROM [Table] WHERE Date NOT LIKE '% 00:00:00.000' 

返回具有两个日期。我如何排除时间值为00:00:00.000的日期?

+0

您使用的是SQL Server的哪个版本? – entropic 2014-10-02 16:00:38

+0

2008 - 10.0.5512 – 2014-10-02 16:02:24

+0

空格字符是问题 – codingbiz 2014-10-02 16:07:17

SELECT * FROM [Table] WHERE CAST(Date AS time) NOT LIKE '%00:00:00.000' 
+1

** 1。**你不是理想地将直接转换为'VARCHAR'而不是'TIME'(然后需要另一个隐式转换为'LIKE'模式-匹配)? ** 2。**如果您*执行*转换为'TIME',您是否还需要模式中的'%'? – stakx 2014-10-02 16:22:29

+0

实际上使用引号就像投射到字符串 – apomene 2014-10-02 16:23:53

+0

良好的答案伴随着代码示例以及将来读者的解释。当问这个问题的人可能会理解你的答案时,解释你如何到达它可能会帮助无数其他人。 – Stonz2 2014-10-02 16:29:01

试试这个:

select * from (
select *,cast(AttDate as time) MyTime 
from yourtable 
)d 
where d.MyTime!='00:00:00.000' 

如果您想筛选出的实例,时间是午夜,你可以简单地投你的日期date和比较,如果他们是平等的,就像这样:

select * from [Table] where [Date] <> convert(date, [Date]) 
+0

@ Stonz2有意思这样做 - 被拉进会议,想要为用户弄点东西 – entropic 2014-10-02 17:01:36