私はこのようなプロパティを持っています:
private SqlParameter DateOfBirthSqlParameter
{
get
{
return new SqlParameter("@date", SqlDbType.Date)
{
Value = dateOfBirth.ToString("MM/dd/yyyy");
};
}
}
dateOfBirth
DataTime
C# 型です。このパラメーターを使用して、次のように SQL コマンドに追加します。
Select * From mytable Where dob_dt = @date
問題は、SQL Server 2005 では機能しないことです。例外が発生しました。
System.ArgumentException: 使用中の SQL Server のバージョンはデータ型 'date' をサポートしていません
これは、SQL Server 2005 が をサポートしていないためDate
です。これは、新しいバージョン (SQL Server 2008 ) の機能です。
これには多くの解決策があります。たとえばSqlDbType.Date
、SqlDbType.DateTime
リファレンスは、SQL Server 2008 でサポートされているすべての機能を提供するバージョンだと思いSystem.Data
ます。2005 のみをサポートするものに変更する必要がありますか? それは他の可能な不一致を発見するのに役立ちますか? この状況を処理する最善の方法は何ですか?
ありがとう。
更新: 2012 年 8 月 31 日
例では生年月日を使用しましたが、私のアプリケーションでは purchase_dt などの別のものを使用しました (時間とともに)。私の最初の Select ステートメントは次のとおりです。
Select * From mytable Where Cast(purchase_dt as Date) = @date
SQL Server 2008を搭載した私のコンピューターでは問題なく、SQL Server 2005を搭載した別のPCでも問題なく、選択に到達したときに例外がスローされました。
しかし、それを修正したら、次のようにします。
Select * From mytable Where Cast(DATEDIFF(dd, 0, purchase_dt) as DateTime) = @date
これにより、Web アプリケーション全体が (別の PC で) 壊れてしまいました... 問題はSqlDbType.Date
. しかし、なぜ以前は壊れなかったのですか?