2016-09-12 18 views
-5

私はVARCHAR(25)として保存された日付があります。私はDate1を検索するクエリを作成しようとしていますが、日付がDATEまたはDATETIMEという名前で保存されていないため、単にそれを行っていません。助けてもらえますか?SQL Serverの日付のクエリ

これは私がしようとしてきたものです...

Select * from tblAd1 
where date1 = '9/12/2016' 

EDIT: 私のミス - それは適切にそれをやっていなかったとき、私はORDER BY日付1を行うにしようとしたとき、それは起こっていたのです。

Select * from tblAd1 
order by date1 
+0

あなたの分析は間違っています。 'date1'列にvarchar値 '9/12/2016'を持つ行があった場合、このクエリはそれらを返します。 –

+0

正しくフォーマットするには 'CONVERT'または' CAST'を試してください。 –

+0

私はテーブルの日付を見て、日付が '9/12/2016'であることを確認しますが、クエリを実行するとレコードが返されません – BobSki

答えて

7

使用CASTまたはそれが可能検索するにもかかわらず

Select * 
from tblAd1 
where cast(date1 as date) = '2016-09-12' 

Convert、あなたはむしろVarcharに保存DATEデータ型で日付を格納する必要があります。 varchar型に日付を格納しているので、悪い日付を格納するための変更がさらにあり、dateに変換するとエラーになります。これにより、date1欄にindexが存在しないようにします。

+0

これはありがとうございます! – BobSki

+1

@Bobski Errorsは最悪のシナリオでもありません。あなたは値が間違った日付としてキャストされることになります。その情報の機密性によっては、'01/01/16 'が2016年1月16日ではなく1901年1月16日にキャストされたため、あなたのアプリで予期せぬ騒動が発生する可能性があります。Prdpのアドバイスを受け、これ以上の開発。 – Crono

+0

@Crono - 私はそれに乗ります。ほとんどの場合、これらの日付はAddedON列に追加されます。レコードが追加された日時を確認するだけです。これで私は追加された日付までに注文する必要があった - しかし、あなたは絶対に正しいです。とにかく、他の日付の列と同じように、誰かがなぜ入力しなかったのか分かりません。 – BobSki