2011-07-08 13 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:これらの行の1つの中のフルタイムスタンプは次のようになります

39.553

ノートラブルで同様のことを何度もやりました、上記のクエリは何を試しても結果を返しません。 (はい、今日と昨日のタイムスタンプが列にあります)。

構文エラーがありましたか?私は狂ってる?私のDBの中のノームが私の質問を乱していますか?助けてください!どうもありがとうございます!

答えて

1

そのフィールドのデータ型がdatetimeまたはsmalldatetimeある場合、期待どおり、その後LIKEは動作しません。あなたが好きな、DATEPART機能やBETWEENを行うことができます

:心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'

ベアは包括的です。

+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