C# LINQ to SQL:日期格式的一部分出错
我有一个应用程序,我想找到一年中不同的可用月份。但是,通过下面的查询,我得到了错误消息 日期格式的一部分出错。[表达式(如果已知)=] 当我尝试执行以下查询时:C# LINQ to SQL:日期格式的一部分出错,c#,linq,entity-framework,windows-phone-7,C#,Linq,Entity Framework,Windows Phone 7,我有一个应用程序,我想找到一年中不同的可用月份。但是,通过下面的查询,我得到了错误消息 日期格式的一部分出错。[表达式(如果已知)=] 当我尝试执行以下查询时: IQueryable<DateTime> availableMonths = (from item in database.IntakeItems where item.Timestamp >= statsYearStart && item.Timestamp
IQueryable<DateTime> availableMonths =
(from item in database.IntakeItems
where item.Timestamp >= statsYearStart
&& item.Timestamp <= statsYearEnd
select new DateTime(1, item.Timestamp.Month, 1))
.Distinct()
.OrderByDescending(y => y.Month);
数据库是通过使用EntityFramework的代码优先方法创建的。item.Timestamp的列定义为:
private DateTime timestamp;
[Column]
public DateTime Timestamp
{
get
{
return timestamp;
}
set
{
if (timestamp != value)
{
NotifyPropertyChanging();
timestamp = value;
NotifyPropertyChanged();
}
}
}
我是LINQ和EF的新手,所以如果您需要更多信息,请告诉我。起初我怀疑这可能是因为本地化问题(应用程序),但是我没有在任何
日期时间上使用.ToString
。什么可能导致异常?我认为问题在于您将日期时间的年份设置为1
,并且我认为EF的最小日期为
1/1/1753
太棒了,就是这样。谢谢你的快速回答@很高兴我能帮上忙:)如果你能,如果你对答案满意,请接受它,这样问题就可以结束了。我会在10分钟后尽快回答:)+1。我不认为EF本身就有那个最短的日期,而是一些数据库作为一种方式来回避关于1752-09-03到1752-09-13的问题,这在英国或她的殖民地(包括后来成为美国的殖民地)是没有发生的,因为那时他们从儒略历改为公历。SQLServer对其datetime
数据类型有此限制,尽管datetime2
通过使用前公历(也就是说,假装公历一直在使用,因此1752-09-14之前的一天被称为1752-09-13,而不是1752-09-02)来规避此限制。
1/1/1753