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 版本不支持数据类型“日期”

这是因为 SQL Server 2005 不支持Date,这是更高版本(SQL Server 2008)的一个特性。

有很多解决方案,例如更改SqlDbType.DateSqlDbType.DateTime

我猜这个参考System.Data是一个提供 SQL Server 2008 支持的所有功能的版本。我应该把它改成只支持 2005 的东西吗?这将有助于发现其他可能的不匹配?处理这种情况的最佳方法是什么?

谢谢。

更新:2012 年 8 月 31 日

在示例中,我使用了出生日期,但在我的应用程序中,我使用了其他东西,例如 purchase_dt 或类似的东西(上面有时间)。我的第一个 Select 语句是:

Select * From mytable Where Cast(purchase_dt as Date) = @date

这在我的装有 SQL Server 2008的电脑上很好,在另一台装有 SQL Server 2005的电脑上也很好,只是在选择时抛出异常。

但是,一旦我解决了这个问题,使用:

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

DATESQL Server 2005 不支持 数据类型, DATESQL Server 2008 版本支持类型。相反,您可以使用datetimesmalldate

于 2013-07-07T11:52:29.700 回答