mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Support (date1-date2).ToTalDays hours minutes
This commit is contained in:
parent
af39446253
commit
ebe0a7b31b
@ -100,6 +100,7 @@
|
|||||||
<Compile Include="UnitTest\Models\UserEntity.cs" />
|
<Compile Include="UnitTest\Models\UserEntity.cs" />
|
||||||
<Compile Include="UnitTest\Models\UserRoleEntity.cs" />
|
<Compile Include="UnitTest\Models\UserRoleEntity.cs" />
|
||||||
<Compile Include="UnitTest\UCustom01.cs" />
|
<Compile Include="UnitTest\UCustom01.cs" />
|
||||||
|
<Compile Include="UnitTest\UCustom011.cs" />
|
||||||
<Compile Include="UnitTest\UCustom02.cs" />
|
<Compile Include="UnitTest\UCustom02.cs" />
|
||||||
<Compile Include="UnitTest\UCustom03.cs" />
|
<Compile Include="UnitTest\UCustom03.cs" />
|
||||||
<Compile Include="UnitTest\UCustom010.cs" />
|
<Compile Include="UnitTest\UCustom010.cs" />
|
||||||
|
@ -31,6 +31,7 @@ namespace OrmTest
|
|||||||
}
|
}
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
|
UCustom011.Init();
|
||||||
UCustom010.Init();
|
UCustom010.Init();
|
||||||
UCustom08.Init();
|
UCustom08.Init();
|
||||||
UCustom07.Init();
|
UCustom07.Init();
|
||||||
|
32
Src/Asp.Net/SqlServerTest/UnitTest/UCustom011.cs
Normal file
32
Src/Asp.Net/SqlServerTest/UnitTest/UCustom011.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
using OrmTest.UnitTest.Models;
|
||||||
|
using SqlSugar;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OrmTest
|
||||||
|
{
|
||||||
|
public class UCustom011
|
||||||
|
{
|
||||||
|
public static void Init()
|
||||||
|
{
|
||||||
|
var db = NewUnitTest.Db;
|
||||||
|
db.Queryable<Order>().Where(it => (it.CreateTime - SqlFunc.GetDate()).TotalDays > 1).ToList();
|
||||||
|
var x1=db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddYears(-1)).TotalDays).ToList();
|
||||||
|
var x2 = db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddDays(-1)).TotalHours).ToList();
|
||||||
|
var x3 = db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddHours(-1)).TotalMinutes).ToList();
|
||||||
|
var x4 = db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddMinutes(-1)).TotalSeconds).ToList();
|
||||||
|
if (x1.Any())
|
||||||
|
{
|
||||||
|
Check.Exception(x1.First()!=365, "unit error . UCustom011");
|
||||||
|
Check.Exception(x2.First() != 24, "unit error . UCustom011");
|
||||||
|
Check.Exception(x3.First() != 60, "unit error . UCustom011");
|
||||||
|
Check.Exception(x4.First() != 60, "unit error . UCustom011");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -20,6 +20,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
ResolveLength(parameter, isLeft, expression);
|
ResolveLength(parameter, isLeft, expression);
|
||||||
}
|
}
|
||||||
|
else if (IsDateDiff(expression))
|
||||||
|
{
|
||||||
|
ResolveDateDiff(parameter, isLeft, expression);
|
||||||
|
}
|
||||||
else if (isHasValue)
|
else if (isHasValue)
|
||||||
{
|
{
|
||||||
ResolveHasValue(parameter, expression);
|
ResolveHasValue(parameter, expression);
|
||||||
@ -63,6 +67,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region Resolve default
|
#region Resolve default
|
||||||
private void ResolveDefault(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData, bool isSingle)
|
private void ResolveDefault(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData, bool isSingle)
|
||||||
{
|
{
|
||||||
@ -207,6 +212,43 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Resolve special member
|
#region Resolve special member
|
||||||
|
private void ResolveDateDiff(ExpressionParameter parameter, bool? isLeft, MemberExpression expression)
|
||||||
|
{
|
||||||
|
var binaryExp=expression.Expression as BinaryExpression;
|
||||||
|
var beginExp = binaryExp.Right;
|
||||||
|
var endExp = binaryExp.Left;
|
||||||
|
|
||||||
|
var dateType = DateType.Day;
|
||||||
|
var begin = GetNewExpressionValue(beginExp);
|
||||||
|
var end = GetNewExpressionValue(endExp);
|
||||||
|
|
||||||
|
foreach (var item in UtilMethods.EnumToDictionary<DateType>())
|
||||||
|
{
|
||||||
|
if (expression.Member.Name.ToLower().Contains(item.Key.ToLower()))
|
||||||
|
{
|
||||||
|
dateType = item.Value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var result = this.Context.DbMehtods.DateDiff(new MethodCallExpressionModel()
|
||||||
|
{
|
||||||
|
Args = new List<MethodCallExpressionArgs>() {
|
||||||
|
new MethodCallExpressionArgs(){
|
||||||
|
MemberName=dateType,
|
||||||
|
MemberValue=dateType
|
||||||
|
},
|
||||||
|
new MethodCallExpressionArgs(){
|
||||||
|
MemberName=begin,
|
||||||
|
MemberValue=begin
|
||||||
|
},
|
||||||
|
new MethodCallExpressionArgs(){
|
||||||
|
MemberName=end,
|
||||||
|
MemberValue=end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}); ;
|
||||||
|
base.AppendMember(parameter, isLeft, result);
|
||||||
|
}
|
||||||
private void ResolveDateDateByCall(ExpressionParameter parameter, bool? isLeft, MemberExpression expression)
|
private void ResolveDateDateByCall(ExpressionParameter parameter, bool? isLeft, MemberExpression expression)
|
||||||
{
|
{
|
||||||
var value = GetNewExpressionValue(expression.Expression);
|
var value = GetNewExpressionValue(expression.Expression);
|
||||||
@ -441,6 +483,17 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helper
|
#region Helper
|
||||||
|
private static bool IsDateDiff(MemberExpression expression)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
expression.Expression!=null&&
|
||||||
|
expression.Expression is BinaryExpression &&
|
||||||
|
expression.Expression.Type == UtilConstants.TimeSpanType&&
|
||||||
|
expression.Member.Name.StartsWith("Total")&&
|
||||||
|
expression.Member.Name.EndsWith("s")
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName)
|
private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName)
|
||||||
{
|
{
|
||||||
if (parameter.BaseExpression is BinaryExpression || (parameter.BaseParameter.CommonTempData != null && parameter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append)))
|
if (parameter.BaseExpression is BinaryExpression || (parameter.BaseParameter.CommonTempData != null && parameter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append)))
|
||||||
|
Loading…
Reference in New Issue
Block a user