mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Oracle support datediff
This commit is contained in:
parent
d9e8f79108
commit
af39446253
@ -53,6 +53,14 @@ namespace OrmTest
|
|||||||
).ToList();
|
).ToList();
|
||||||
var test2 = db.Queryable<Order>().Select<ViewOrder>().ToList();
|
var test2 = db.Queryable<Order>().Select<ViewOrder>().ToList();
|
||||||
var test3 = db.Queryable<Order>().Select(it=>new Order() { CreateTime=SqlFunc.GetDate() }).ToList();
|
var test3 = db.Queryable<Order>().Select(it=>new Order() { CreateTime=SqlFunc.GetDate() }).ToList();
|
||||||
|
var btime = Convert.ToDateTime("2021-2-1");
|
||||||
|
var etime = Convert.ToDateTime("2022-1-12");
|
||||||
|
var test01 = db.Queryable<Order>().Select(it => SqlFunc.DateDiff(DateType.Year, btime, etime)).ToList();
|
||||||
|
var test02 = db.Queryable<Order>().Select(it => SqlFunc.DateDiff(DateType.Day, btime, etime)).ToList();
|
||||||
|
var test03 = db.Queryable<Order>().Select(it => SqlFunc.DateDiff(DateType.Month, btime, etime)).ToList();
|
||||||
|
var test04 = db.Queryable<Order>().Select(it => SqlFunc.DateDiff(DateType.Second, DateTime.Now, DateTime.Now.AddMinutes(2))).ToList();
|
||||||
|
var test05 = db.Queryable<Order>().Select(it => SqlFunc.DateDiff(DateType.Minute, DateTime.Now, DateTime.Now.AddMinutes(21))).ToList();
|
||||||
|
var test06 = db.Queryable<Order>().Select(it => SqlFunc.DateDiff(DateType.Hour, DateTime.Now, DateTime.Now.AddHours(3))).ToList();
|
||||||
Console.WriteLine("#### Examples End ####");
|
Console.WriteLine("#### Examples End ####");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +53,33 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public partial class OracleMethod : DefaultDbMethod, IDbMethods
|
public partial class OracleMethod : DefaultDbMethod, IDbMethods
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public override string DateDiff(MethodCallExpressionModel model)
|
||||||
|
{
|
||||||
|
var parameter = (DateType)(Enum.Parse(typeof(DateType), model.Args[0].MemberValue.ObjToString()));
|
||||||
|
var begin = model.Args[1].MemberName;
|
||||||
|
var end = model.Args[2].MemberName;
|
||||||
|
switch (parameter)
|
||||||
|
{
|
||||||
|
case DateType.Year:
|
||||||
|
return $" ( cast((months_between( {end} , {begin}))/12 as number(9,0) ) )";
|
||||||
|
case DateType.Month:
|
||||||
|
return $" ( cast((months_between( {end} , {begin})) as number(9,0) ) )";
|
||||||
|
case DateType.Day:
|
||||||
|
return $" ( ROUND(TO_NUMBER({end} - {begin})) )";
|
||||||
|
case DateType.Hour:
|
||||||
|
return $" ( ROUND(TO_NUMBER({end} - {begin}) * 24) )";
|
||||||
|
case DateType.Minute:
|
||||||
|
return $" ( ROUND(TO_NUMBER({end} - {begin}) * 24 * 60) )";
|
||||||
|
case DateType.Second:
|
||||||
|
return $" ( ROUND(TO_NUMBER({end} - {begin}) * 24 * 60 * 60) )";
|
||||||
|
case DateType.Millisecond:
|
||||||
|
return $" ( ROUND(TO_NUMBER({end} - {begin}) * 24 * 60 * 60 * 60) )";
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
throw new Exception(parameter + " datediff no support");
|
||||||
|
}
|
||||||
private void PageEach<T>(IEnumerable<T> pageItems, int pageSize, Action<List<T>> action)
|
private void PageEach<T>(IEnumerable<T> pageItems, int pageSize, Action<List<T>> action)
|
||||||
{
|
{
|
||||||
if (pageItems != null && pageItems.Any())
|
if (pageItems != null && pageItems.Any())
|
||||||
|
Loading…
Reference in New Issue
Block a user