2011-02-07 13 views
1

私は指定された日付の間にこれらのレコードをリストするために、次のクエリを使用しています。しかし、それは動作していません。また、私にエラーを与えないでください。 次のクエリに問題がありますか?SQLクエリ質問

SET DATEFORMAT dmy 
select *from tamirarizakaydi where tarih between '31.01.2011 ' and ' 04.02.2011' 

ありがとうございます。

+0

'' 04.02.2011 'の先頭と '' 31 .01.2011'の最後に余分なスペースがあります。それが何かに影響するかどうかは分かりません。 'tarih'カラムのデータ型は何ですか? ISOフォーマット 'yyyymmdd'も使用してください。 –

答えて

2

先頭と末尾のスペースは、私が見る限りでは違いはありません。

SET DATEFORMAT dmy 
select CAST('31.01.2011 ' as date) , CAST(' 04.02.2011' as date), CAST('31.01.2011 ' as datetime), CAST(' 04.02.2011' as datetime) 

戻り

---------- ---------- ----------------------- ----------------------- 
2011-01-31 2011-02-04 2011-01-31 00:00:00.000 2011-02-04 00:00:00.000 

私はtarihは文字列として保存されているか、どんな一致する行を持っていないことを推測するつもりです。

tarihが文字ベースの列の場合、照会は辞書編集の比較を行い、行を探します。tarih >= '31.01.2011 ' and 'tarih <= ' 04.02.2011'範囲の終わりが範囲の開始前にアルファベット順に並んでいるため、この条件に一致する行はありません。