2011-08-15 14 views
1

私は2つのvarchar(30)、startDateとendDate coloumnを持っており、そのcoloumnには日付値とNULLも含まれています。 SQL Server 2005/2008の日付範囲を比較したいと思います。いろいろ書い varchar coloumnの日付範囲を比較する方法

WHERE e2.type=1 
    AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101) 

私はそれが私のdatetimeデータ型にvarcharデータ型の変換は範囲外の値で発生したエラー を与えて実行してみてください

のような。

答えて

1

このエラーメッセージは、varcharに格納されている値をSQLでdatetimeに変換できないことを示しています。データをドリルダウンして問題の行を見つける必要があります。これはやりにくいことです。次のようなものから始めてください。

SELECT StartDate, isdate(StartDate) 
from MyTable 
where StartDate is not null 
    and isdate(StartDate) = 0 

... EndDateについても同様です。文字列から日付への変換は手間がかかりますので、これで対処する必要があります。 (言うまでもなく、datetime値をdatetime値として保存するほうがずっと良いでしょう。テーブル構造を変更できる場合は、そうしてください!)

関連する問題