2011-07-08 66 views
0

我確定這是一個非常簡單的問題,但我一直無法弄清楚。這裏是我的查詢:SQL Server LIKE子句的問題

select column1 from table1 with(nolock) 
where column1 like '2011-07-0[78]%' 
order by column1 desc 

正如你所知道的,我查詢行尋找那些從今天或昨天的時間戳。

這些行之一中一個完整的時間戳看起來是這樣的:

2011-07-08 12:16:39.553

我做過很多類似的事情多次,沒有麻煩,但無論我嘗試什麼,上述查詢都不會返回結果。 (是的,從今天和昨天的專欄中都有時間戳)。

我犯了語法錯誤嗎?我瘋了嗎?我的數據庫中是否有gnome與我的查詢混淆?請幫忙!非常感謝!

回答

1

如果該字段的數據類型爲datetimesmalldatetime則如預期LIKE將無法​​正常工作。

你可以做一個DATEPART功能或BETWEEN,如:

WHERE DATEPART(Year, column1) = 2011 
AND DATEPART(Month, column1) = 7 
AND DATEPART(Day, column1) IN (7, 8) 

WHERE column1 BETWEEN '2011-07-07' AND '2011-07-08'

請牢記BETWEEN是包容。

+0

美麗!非常感謝你的解釋。我知道它一定很簡單,我只是沒有看到它,但是完全正確。 – Joshua

+0

@Josh - 樂於幫忙。只要你有意外的行爲,你可以做的第一件事就是檢查你的數據類型! – JNK

0

試試這個:

select column1 from table1 with(nolock) 
where Cast(column1 as DateTime) between '2011-07-07' AND '2011-07-08' 
order by column1 desc