ビューは日付を条件としてクエリー条件をクエリーするときに明示的に変換されますか?

2276 ワード

今日種目を変えたとき、卵が痛い現象が現れた.次のようにユーザーテーブルを問い合わせるT-SQL文:
Select * From [tableName] Where EditTime = '2012-06-07'

機能は簡単で、「EditTime」の値が2012年06月07日の記録に等しいことを検索します.
しかし、このようなことをビューに書くと、Select*From[viewName]Where EditTime='2012-06-07'というように、このwhere条件を書くと、「文字列から日付と/または時間を変換すると、変換に失敗します」と報告されます.の鳥が出てきて、これでどうなるのか...
ビューが日付型数値フォーマットの暗黙的な変換をサポートしていないためだろうが、これは私の推測にすぎない.解決策は次のようにある.
Select * From [viewName] Where Cast(EditTime as datetime) = '2012-06-07'


また、この方法では'2012-06-07 10:00:00'というフォーマットにマッチしないので、これもマッチしたいなら、このように書かなければなりません. 
Select * From [viewName] Where datediff(dd,Cast(EditTime as datetime),'2012-06-07') = 0