我有这样的财产:
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问题是在Server 2005中不起作用。我有个例外:
System.ArgumentException:正在使用的Server版本不支持数据类型'date‘
这是因为Server 2005不支持Date,所以这是后期版本的特性( Server 2008)。
对此有许多解决方案,例如将SqlDbType.Date更改为SqlDbType.DateTime
我想参考System.Data是一个版本,它提供了Server 2008支持的所有功能。我应该把它改为只支持2005年的东西吗?这将有助于发现其他可能的错配?处理这种情况的最佳方法是什么?
谢谢。
更新: 8/31/2012
在这个例子中,我使用了出生日期,但是在我的应用程序中,我使用了其他的东西,比如purchase_dt或者类似的东西(上面有时间)。我的第一个选择声明是:
Select * From mytable Where Cast(purchase_dt as Date) = @date在我的计算机中,使用Server 2008,在另一台带有Server 2005的PC中,也很好,当它到达select时抛出一个异常。
但是,一旦我解决了这个问题,我说:
Select * From mytable Where Cast(DATEDIFF(dd, 0, purchase_dt) as DateTime) = @date这破坏了整个网络应用程序(在另一台电脑中).问题是SqlDbType.Date。但为什么它以前没有破坏它呢?
发布于 2013-07-07 11:52:29
Server 2005不支持数据类型DATE,Server 2008版本支持DATE类型。相反,您可以使用datetime或smalldate
发布于 2013-08-02 08:10:20
private SqlParameter DateOfBirthSqlParameter
{
get
{
return new SqlParameter("@date", SqlDbType.DateTime)
{
Value = dateOfBirth.ToString("MM/dd/yyyy");
};
}
}https://stackoverflow.com/questions/12201943
复制相似问题