扩展SqlExt,新增DateDiff方法,支持SqlServer和MySql时间差值计算

This commit is contained in:
宋鑫鑫
2024-10-29 14:50:52 +08:00
parent a7ddaff470
commit 74a098b678

View File

@@ -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;
}