2013-12-19 31 views
1

我是新来使用SQL Server 2012和Date类型在我的C#应用​​程序,并很好奇转变为DateTime。我有一个DBML文件,代表我的表和类型,其服务器数据类型为Date,类型为DateTime。我试图做的当天,在我的表中的值之间的简单比较:SQL Server的日期到C#的DateTime

if (adc.HolidaySchedules.FirstOrDefault(d => ((DateTime)d.HolidayDate).Date.AddDays(-1) == DateTime.Today.Date) != null) 

它抛出以下SqlException

The datepart millisecond is not supported by date function dateadd for data type date. 

我很好奇,为什么我得到当我只访问Date以及我应该做什么(显式或其他)来处理这种类型的转换时,这种特殊的例外情况。我原以为我可以致电AddDays()Date

+1

我建议使用[SqlMethods](http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods_methods(V = vs.110)的.aspx)在服务器上执行操作:'SqlMethods.DateDiffYear(o.ModifiedDate,DateTime.Now)> 1' –

回答

2

为什么要变换每个的值在列HolidayDate而不是传递正确的参数?

var date = DateTime.Today.AddDays(1); 
var item = adc.HolidaySchedules.FirstOrDefault(d => d.HolidayDate == date); 
if(item != null) 
{ 
} 
+0

谢谢,这是行不通的。尽管如果任何人有任何事情,我更好奇它为什么不能在HolidayDate值上工作。 – aw04

+0

那么,你可以激发SqlServer Profiler来查看发送到数据库的实际sql查询。 – RePierre