2

私はこのようなプロパティを持っています:

private SqlParameter DateOfBirthSqlParameter
{
    get
    {
        return new SqlParameter("@date", SqlDbType.Date)
            {
                Value = dateOfBirth.ToString("MM/dd/yyyy");
            };
    }
}

dateOfBirthDataTimeC# 型です。このパラメーターを使用して、次のように SQL コマンドに追加します。

Select * From mytable Where dob_dt = @date

問題は、SQL Server 2005 では機能しないことです。例外が発生しました。

System.ArgumentException: 使用中の SQL Server のバージョンはデータ型 'date' をサポートしていません

これは、SQL Server 2005 が をサポートしていないためDateです。これは、新しいバージョン (SQL Server 2008 ) の機能です。

これには多くの解決策があります。たとえばSqlDbType.DateSqlDbType.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. しかし、なぜ以前は壊れなかったのですか?

4

2 に答える 2

0
private SqlParameter DateOfBirthSqlParameter
{
    get
    {
        return new SqlParameter("@date", SqlDbType.DateTime)
            {
                Value = dateOfBirth.ToString("MM/dd/yyyy");
            };
    }
}
于 2013-08-02T08:10:20.480 に答える
0

データ型DATEは SQL Server 2005 ではサポートされていません。 DATE型は SQL Server 2008 バージョンからサポートされています。datetime代わりに、またはを使用できますsmalldate

于 2013-07-07T11:52:29.700 に答える