public virtual void TestDateTimeQuarter()
{
var actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 1, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//0 ?? 1
actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 2, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//
actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 3, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//
actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 4, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//2
actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 7, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//3
actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 11, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//4
actual = db.Orders.Where(o => o.OrderDate == new DateTime(1997, 12, 24)).Take(1).Max(o => SqlFunctions.DatePart(DateParts.Quarter, o.OrderDate));
Console.WriteLine(actual);//4
}