mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 20:43:46 +08:00
PgSql support datediff
This commit is contained in:
@@ -42,6 +42,13 @@ namespace OrmTest
|
|||||||
var getByWhere2 = db.Queryable<Order>().Where(it => it.Id == DateTime.Now.Year).ToList();
|
var getByWhere2 = db.Queryable<Order>().Where(it => it.Id == DateTime.Now.Year).ToList();
|
||||||
var getByFuns = db.Queryable<Order>().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList();
|
var getByFuns = db.Queryable<Order>().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList();
|
||||||
var getByFuns2 = db.Queryable<Order>().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList();
|
var getByFuns2 = db.Queryable<Order>().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList();
|
||||||
|
var btime = Convert.ToDateTime("2021-1-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();
|
||||||
|
Console.WriteLine("#### Examples End ####");
|
||||||
Console.WriteLine("#### Examples End ####");
|
Console.WriteLine("#### Examples End ####");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -136,6 +136,7 @@ namespace SqlSugar
|
|||||||
else if (type!=null&&type.IsEnum())
|
else if (type!=null&&type.IsEnum())
|
||||||
{
|
{
|
||||||
this.DbType = System.Data.DbType.Int64;
|
this.DbType = System.Data.DbType.Int64;
|
||||||
|
this.Value = Convert.ToInt64(Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -133,6 +133,32 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public class PostgreSQLMethod : DefaultDbMethod, IDbMethods
|
public class PostgreSQLMethod : 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 $" ( DATE_PART('Year', {end} ) - DATE_PART('Year', {begin}) )";
|
||||||
|
case DateType.Month:
|
||||||
|
return $" ( ( DATE_PART('Year', {end} ) - DATE_PART('Year', {begin}) ) * 12 + (DATE_PART('month', {end}) - DATE_PART('month', {begin})) )";
|
||||||
|
case DateType.Day:
|
||||||
|
return $" ( DATE_PART('day', {end} - {begin}) )";
|
||||||
|
case DateType.Hour:
|
||||||
|
return $" ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) )";
|
||||||
|
case DateType.Minute:
|
||||||
|
return $" ( ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} ) )";
|
||||||
|
case DateType.Second:
|
||||||
|
return $" ( ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} )";
|
||||||
|
case DateType.Millisecond:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
throw new Exception(parameter + " datediff no support");
|
||||||
|
}
|
||||||
public override string IIF(MethodCallExpressionModel model)
|
public override string IIF(MethodCallExpressionModel model)
|
||||||
{
|
{
|
||||||
var parameter = model.Args[0];
|
var parameter = model.Args[0];
|
||||||
|
Reference in New Issue
Block a user