@@ -837,8 +837,12 @@ protected override Expression VisitBinary(BinaryExpression b)
837
837
b . Left is MemberExpression leftSide && leftSide . Member is PropertyInfo piLeft && ReflectionTools . PropertyEquals ( piLeft , piDayNumber ) &&
838
838
b . Right is MemberExpression rightSide && rightSide . Member is PropertyInfo piRight && ReflectionTools . PropertyEquals ( piRight , piDayNumber ) )
839
839
{
840
+ var diff = TrySqlDifference ( SqlEnums . day , b . Type , leftSide . Expression ! , rightSide . Expression ! ) ;
841
+ if ( diff == null )
842
+ return b ;
840
843
841
- return TrySqlDifference ( SqlEnums . day , b . Type , leftSide . Expression ! , rightSide . Expression ! ) ?? b ;
844
+
845
+ return Add ( new SqlCastExpression ( typeof ( int ) , diff ) ) ;
842
846
}
843
847
844
848
b = SmartEqualizer . UnwrapPrimaryKeyBinary ( b ) ;
@@ -1610,7 +1614,7 @@ protected override Expression VisitMethodCall(MethodCallExpression m)
1610
1614
case "DateTimeExtensions.Quarter" : return TrySqlFunction ( null , GetDatePart ( ) , m . Type , new SqlLiteralExpression ( SqlEnums . quarter ) , m . Arguments . Single ( ) ) ;
1611
1615
case "DateTimeExtensions.WeekNumber" : return TrySqlFunction ( null , GetDatePart ( ) , m . Type , new SqlLiteralExpression ( SqlEnums . week ) , m . Arguments . Single ( ) ) ;
1612
1616
1613
- case "DateTimeExtensions.ToDate " : return TrySqlCast ( m . Type , m . GetArgument ( "dateTime" ) ) ;
1617
+ case "DateTimeExtensions.ToDateOnly " : return TrySqlCast ( m . Type , m . GetArgument ( "dateTime" ) ) ;
1614
1618
case "DateTimeExtensions.ToDateTime" : return TrySqlCast ( m . Type , m . GetArgument ( "date" ) ) ;
1615
1619
case "DateOnly.FromDateTime" : return TrySqlCast ( m . Type , m . GetArgument ( "dateTime" ) ) ;
1616
1620
0 commit comments