From a65b3b758350fd6d234674cd69e450868d370d12 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Sun, 22 Nov 2020 14:31:22 +0800 Subject: [PATCH] Add SqlFunc.toDateShort --- Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs | 6 +++++- .../ExpressionsToSql/DbMethods/DefaultDbMethod.cs | 6 ++++++ .../SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs | 1 + .../SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs | 1 + .../ResolveItems/MethodCallExpressionResolve.cs | 2 ++ .../Sqlite/SqlBuilder/SqliteExpressionContext.cs | 6 ++++++ Src/Asp.Net/SqliteTest/Demo/Demo1_Queryable.cs | 9 +++++++++ 7 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs index bdb5e49ea..b8fac28f8 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs @@ -135,7 +135,11 @@ namespace OrmTest Id = SqlFunc.AggregateSum(SqlFunc.IF(it.Id > 0).Return(1).End(0)) }).ToList(); - + var list2 = db.Queryable().Select(it => new + { + date = SqlFunc.ToDateShort(it.CreateTime), + datetime = SqlFunc.ToDate(it.CreateTime) + }).ToList(); Console.WriteLine("#### SqlFunc End ####"); } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 48be384e6..d44f96034 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -252,6 +252,12 @@ namespace SqlSugar return string.Format(" CAST({0} AS DATETIME)", parameter.MemberName); } + public virtual string ToDateShort(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + return string.Format(" CAST({0} AS DATE)", parameter.MemberName); + } + public virtual string ToTime(MethodCallExpressionModel model) { var parameter = model.Args[0]; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index 87aa7bbb3..2d665c03d 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -42,6 +42,7 @@ namespace SqlSugar string CaseWhen(List> sqls); string Substring(MethodCallExpressionModel model); string ToDate(MethodCallExpressionModel model); + string ToDateShort(MethodCallExpressionModel model); string ToTime(MethodCallExpressionModel model); string ToDecimal(MethodCallExpressionModel model); string Length(MethodCallExpressionModel model); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index bd8e6c558..9a920521c 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -98,6 +98,7 @@ namespace SqlSugar /// /// public static DateTime ToDate(object value) { return value.ObjToDate(); } + public static DateTime ToDateShort(object value) { return value.ObjToDate(); } /// ///HH:mm:ss /// diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index f4e30f614..f0a1c013d 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -668,6 +668,8 @@ namespace SqlSugar return this.Context.DbMehtods.BitwiseAnd(model); case "BitwiseInclusiveOR": return this.Context.DbMehtods.BitwiseInclusiveOR(model); + case "ToDateShort": + return this.Context.DbMehtods.ToDateShort(model); default: break; } diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs index 3b8d0d2c1..534f0d147 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs @@ -97,6 +97,12 @@ namespace SqlSugar return string.Format(" DATETIME({0})", parameter.MemberName); } + public override string ToDateShort(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + return string.Format(" strftime('%Y-%m-%d', {0})", parameter.MemberName); + } + public override string DateAddDay(MethodCallExpressionModel model) { var parameter = model.Args[0]; diff --git a/Src/Asp.Net/SqliteTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/SqliteTest/Demo/Demo1_Queryable.cs index 372fe8586..affc980f0 100644 --- a/Src/Asp.Net/SqliteTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/SqliteTest/Demo/Demo1_Queryable.cs @@ -124,7 +124,16 @@ namespace OrmTest Console.WriteLine("#### SqlFunc Start ####"); var db = GetInstance(); var index= db.Queryable().Select(it => SqlFunc.Contains("a", "cccacc")).First(); + var list2 = db.Queryable().Select(it => new + { + date = SqlFunc.ToDateShort(it.CreateTime), + datetime = SqlFunc.ToDate(it.CreateTime) + }).ToList(); + var list3 = db.Queryable().Select(it => new Order + { + CreateTime = SqlFunc.ToDateShort(it.CreateTime) + }).ToList(); Console.WriteLine("#### SqlFunc End ####"); }