2014-10-02 112 views
0

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

回答

0
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

0

試試這個:

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

如果您想篩選出的實例,時間是午夜,你可以簡單地投你的日期date和比較,如果他們是平等的,就像這樣:

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

@ Stonz2有意思這樣做 - 被拉進會議,想要爲用戶弄點東西 – entropic 2014-10-02 17:01:36