2012-07-22 65 views
0

如何根据安装在Windows Server 2008 R2上的SQL Server 2005 Express中的DateTime查询行?在SQL Server 2005 Express中查询日期时间

我有根据从和到日期值选择行的代码。它在我的Windows 7系统中工作。但是,它不工作在Windows Server 2008 R2的...任何帮助

this.filterreportTableAdapter.FillBy(this.cRdataset.filterreport_datatable, fromdate, todate); 

和我的SQL查询

SELECT * 
FROM tablename 
WHERE DATE BETWEEN @fromdate and @todate 
+1

什么数据类型是你的'DATE'列? (这是一个非常糟糕的**列名,顺便说一句 - 因为它是2008版及以后的数据类型)。你从** @datedate和@ @ todate'传入了什么**值** – 2012-07-22 07:52:05

回答

1

这听起来像日期/时间值作为字符串传递。这总是一个坏主意,格式问题比比皆是。这里最好的方法很简单:使用正确类型的参数。如果客户端和服务器都知道它是DateTime,那么它将作为原始值传递,而不是字符串 - 因此不存在格式问题。

确保在C#fromdatetodateDateTime,那@fromdate@todatetablename.DATE在TSQL是datetime

0

请设置日期时间格式相同,您的Windows 7的一个例如:dd/MM/yyyy

0

看来您在传递日期参数时出现日期格式错误。 有两种解决方法: 首先,你可以尝试使用日期格式作品无处不是: YYYYMMDD例如:20120722. 另一种解决方案是使DateDiff的SQL查询 最佳方面

+1

或* actual *解决方案...使用输入参数,这些参数不受格式化问题的影响。 – 2012-07-22 08:13:50