mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-13 03:40:57 +08:00
扩展SqlExt,新增DateDiff方法,支持SqlServer和MySql时间差值计算
This commit is contained in:
@@ -218,6 +218,61 @@ namespace FreeSql
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 时间比较
|
||||
/// <summary>
|
||||
/// 计算两个日期之间的差异
|
||||
/// 时间2 - 时间1
|
||||
/// </summary>
|
||||
/// <param name="datePart"></param>
|
||||
/// <param name="dateTimeOffset1"></param>
|
||||
/// <param name="dateTimeOffset2"></param>
|
||||
public static long DateDiff(string datePart, DateTimeOffset dateTimeOffset1, DateTimeOffset dateTimeOffset2)
|
||||
{
|
||||
var up = expContext.Value;
|
||||
|
||||
// 根据不同数据库类型定义不同的 SQL 语句
|
||||
if (up.DataType == DataType.SqlServer)
|
||||
{
|
||||
up.Result = $"DATEDIFF({datePart}, {up.ParsedContent["dateTimeOffset1"]}, {up.ParsedContent["dateTimeOffset2"]})";
|
||||
}
|
||||
else if (up.DataType == DataType.MySql)
|
||||
{
|
||||
up.Result = $"TIMESTAMPDIFF({datePart}, {up.ParsedContent["dateTimeOffset1"]}, {up.ParsedContent["dateTimeOffset2"]})";
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException("不支持的数据库类型");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/// <summary>
|
||||
/// 计算两个日期之间的差异
|
||||
/// 时间2 - 时间1
|
||||
/// </summary>
|
||||
/// <param name="datePart"></param>
|
||||
/// <param name="dateTime1">时间1</param>
|
||||
/// <param name="dateTime2">时间2</param>
|
||||
public static long DateDiff(string datePart, DateTime dateTime1, DateTime dateTime2)
|
||||
{
|
||||
var up = expContext.Value;
|
||||
|
||||
// 根据不同数据库类型定义不同的 SQL 语句
|
||||
if (up.DataType == DataType.SqlServer)
|
||||
{
|
||||
up.Result = $"DATEDIFF({datePart}, {up.ParsedContent["dateTimeOffset1"]}, {up.ParsedContent["dateTimeOffset2"]})";
|
||||
}
|
||||
else if (up.DataType == DataType.MySql)
|
||||
{
|
||||
up.Result = $"TIMESTAMPDIFF({datePart}, {up.ParsedContent["dateTimeOffset1"]}, {up.ParsedContent["dateTimeOffset2"]})";
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException("不支持的数据库类型");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// case when .. then .. end
|
||||
/// </summary>
|
||||
@@ -317,7 +372,8 @@ namespace FreeSql
|
||||
if (a > 0) sb.Append(",");
|
||||
sb.Append(expContext.Utility.ParseExpression(expNew.Arguments[a]));
|
||||
}
|
||||
} else
|
||||
}
|
||||
else
|
||||
sb.Append(expContext.ParsedContent["column"]);
|
||||
return that;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user