2

SQL Server 2005 を使用しています。

私のTrade_Date列は datatypedatetimeです。

次のような値があります。2/12/2013 11:59:00 PM , 2/13/2013 11:59:00 PM

つまり、時間とともに日付が異なります。

where句で日付[日付のみ]を比較したい。

次のクエリで試しています:

select * 
from foclosing 
where CONVERT(varchar(11), Trade_Date) like '2/12/2013 %'

また

select * 
from foclosing 
where Trade_Date = CONVERT(datetime, '2/12/2013')

しかし、これらのクエリは両方とも機能していません。

何が問題になる可能性がありますか?

4

1 に答える 1

7
select * from foclosing
where Trade_Date >= '20130212' AND Trade_Date < '20130213'
  1. SQL Server で安全な yyyymmdd を使用します
  2. 列に関数を適用してから比較しないでください (最初のクエリ)
    ここで間違い 2 を参照してください: https://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
  3. ロケールベースの日付を varchar として比較しないでください (最初のクエリ)
  4. Trade_Date には時間要素があるため、2 番目のクエリが失敗します

要約すると、次のような例では日付変換を使用しないでください: datetime は範囲です

于 2013-04-04T12:28:29.147 に答える