2017-05-29 59 views
-2

私はデータベース接続にsqlを使用しています。私は日付でデータベースのレコードをフィルタリングしています。これは、関数convert(varchar(100),column name,106)で構成されるSQLクエリを使用しています。私はdd/MMM/yyyy形式の日付と比較しています。その結果、私は次のすべての日付の記録を取得します。日付と日付を比較した結果の比較

例:私はその日の記録を持つのinspiteその後、01/6月/ 2017でテーブルをフィルタ処理しようとすると、私は次のすべての日付のレコードを取得します。私は01/June/2017の記録を得ることができません。

私は、以上の式に等しいを使用していました。

+1

SQLも投稿できますか? –

答えて

0

このYYYYMMDD番号の形式に変換し、以下のように比較を行う方が良いです:

select convert(int,convert(varchar(10),[your column],112)) 

20170529 
0

比較を行う際に任意の形式(=文字列)にあなたの日付を変換しないでください。常に日付(またはdatetimeなど)形式を使用してください。そうすれば、文字列比較や数値比較ではなく、実際の値を比較することになります。ここでの問題は、フォーマット106はdd mon yyyyあるので、それは文字列dd/MMM/yyyyだから、それはあなたの日付と一致することはありませんが、あなたは任意の日付があるため、あなたの指定した日付の後に来るアルファベット順に、たとえば02/Jan/1990ために、とにかく02で始まる取得することです。