*同步修改OceanBaseForOracle和TDSQLForPGODBC

This commit is contained in:
guoshun.du 2025-06-10 09:47:47 +08:00
parent 6bb0a3fa30
commit edf6b79fd7
5 changed files with 44 additions and 11 deletions

View File

@ -75,6 +75,11 @@ namespace SqlSugar.OceanBaseForOracle
} }
public partial class OceanBaseForOracleMethod : DefaultDbMethod, IDbMethods public partial class OceanBaseForOracleMethod : DefaultDbMethod, IDbMethods
{ {
public override string UNIX_TIMESTAMP(MethodCallExpressionModel model)
{
var parameterNameA = model.Args[0].MemberName;
return $" (CAST({parameterNameA} AS DATE) - DATE '1970-01-01') * 86400 ";
}
public override string IsNullOrEmpty(MethodCallExpressionModel model) public override string IsNullOrEmpty(MethodCallExpressionModel model)
{ {
var parameter = model.Args[0]; var parameter = model.Args[0];
@ -237,11 +242,10 @@ namespace SqlSugar.OceanBaseForOracle
switch (type) switch (type)
{ {
case DateType.Year: case DateType.Year:
time = 1 * 365; // 每年 = 12 个月
break; return $"ADD_MONTHS({parameter.MemberName}, ({parameter2.MemberName}) * 12)";
case DateType.Month: case DateType.Month:
time = 1 * 30; return $"ADD_MONTHS({parameter.MemberName}, {parameter2.MemberName})";
break;
case DateType.Day: case DateType.Day:
break; break;
case DateType.Hour: case DateType.Hour:

View File

@ -177,6 +177,16 @@ namespace SqlSugar.OceanBaseForOracle
{ {
return Convert.ToInt64(value); return Convert.ToInt64(value);
} }
else if (value is TimeSpan ts)
{
return string.Format(
"INTERVAL '{0} {1:D2}:{2:D2}:{3:D2}.{4:D3}' DAY TO SECOND(3)",
ts.Days,
ts.Hours,
ts.Minutes,
ts.Seconds,
ts.Milliseconds);
}
else if (type == UtilConstants.ByteArrayType) else if (type == UtilConstants.ByteArrayType)
{ {
++i; ++i;

View File

@ -108,6 +108,16 @@ namespace SqlSugar.OceanBaseForOracle
{ {
return value.ObjToBool() ? "1" : "0"; return value.ObjToBool() ? "1" : "0";
} }
else if (value is TimeSpan ts)
{
return string.Format(
"INTERVAL '{0} {1:D2}:{2:D2}:{3:D2}.{4:D3}' DAY TO SECOND(3)",
ts.Days,
ts.Hours,
ts.Minutes,
ts.Seconds,
ts.Milliseconds);
}
else if (type == UtilConstants.DateTimeOffsetType) else if (type == UtilConstants.DateTimeOffsetType)
{ {
var date = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value); var date = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);

View File

@ -133,6 +133,11 @@ namespace SqlSugar.TDSQLForPGODBC
} }
public class TDSQLForPGODBCMethod : DefaultDbMethod, IDbMethods public class TDSQLForPGODBCMethod : DefaultDbMethod, IDbMethods
{ {
public override string UNIX_TIMESTAMP(MethodCallExpressionModel model)
{
var parameterNameA = model.Args[0].MemberName;
return $" EXTRACT(EPOCH FROM {parameterNameA})::BIGINT ";
}
public override string CharIndex(MethodCallExpressionModel model) public override string CharIndex(MethodCallExpressionModel model)
{ {
return string.Format(" (strpos ({1},{0})-1)", model.Args[0].MemberName, model.Args[1].MemberName); return string.Format(" (strpos ({1},{0})-1)", model.Args[0].MemberName, model.Args[1].MemberName);

View File

@ -65,7 +65,7 @@ namespace SqlSugar.TDSQLForPGODBC
return await Task.FromResult(dt.Rows.Count); return await Task.FromResult(dt.Rows.Count);
} }
private void BulkCopy(DataTable dt, string copyString, NpgsqlConnection conn, List<DbColumnInfo> columns) private void BulkCopy(DataTable dt, string copyString, NpgsqlConnection conn, List<DbColumnInfo> columns)
{ {
if (conn.State == ConnectionState.Closed) if (conn.State == ConnectionState.Closed)
conn.Open(); conn.Open();
@ -75,9 +75,9 @@ namespace SqlSugar.TDSQLForPGODBC
ColumnView result = new ColumnView(); ColumnView result = new ColumnView();
result.DbColumnInfo = columns.FirstOrDefault(it => it.DbColumnName.EqualCase(item.ColumnName)); result.DbColumnInfo = columns.FirstOrDefault(it => it.DbColumnName.EqualCase(item.ColumnName));
result.DataColumn = item; result.DataColumn = item;
result.EntityColumnInfo=this.entityInfo.Columns.FirstOrDefault(it => it.DbColumnName.EqualCase(item.ColumnName)); result.EntityColumnInfo = this.entityInfo.Columns.FirstOrDefault(it => it.DbColumnName.EqualCase(item.ColumnName));
var key = result.DbColumnInfo?.DataType?.ToLower(); var key = result.DbColumnInfo?.DataType?.ToLower();
if (result.DbColumnInfo == null) if (result.DbColumnInfo == null)
{ {
result.Type = null; result.Type = null;
} }
@ -88,7 +88,7 @@ namespace SqlSugar.TDSQLForPGODBC
else if (key?.First() == '_') else if (key?.First() == '_')
{ {
if (key == "_int4") if (key == "_int4")
{ {
result.Type = NpgsqlDbType.Array | NpgsqlDbType.Integer; result.Type = NpgsqlDbType.Array | NpgsqlDbType.Integer;
} }
else if (key == "_int2") else if (key == "_int2")
@ -99,6 +99,10 @@ namespace SqlSugar.TDSQLForPGODBC
{ {
result.Type = NpgsqlDbType.Array | NpgsqlDbType.Bigint; result.Type = NpgsqlDbType.Array | NpgsqlDbType.Bigint;
} }
else if (key == "_float8")
{
result.Type = NpgsqlDbType.Array | NpgsqlDbType.Double;
}
else else
{ {
var type = PgSqlType[key.Substring(1)]; var type = PgSqlType[key.Substring(1)];
@ -131,17 +135,17 @@ namespace SqlSugar.TDSQLForPGODBC
{ {
writer.Write(value); writer.Write(value);
} }
else else
{ {
writer.Write(value, column.Type.Value); writer.Write(value, column.Type.Value);
} }
} }
} }
writer.Complete(); writer.Complete();
} }
} }
public override async Task<int> UpdateByTempAsync(string tableName, string tempName, string[] updateColumns, string[] whereColumns) public override async Task<int> UpdateByTempAsync(string tableName, string tempName, string[] updateColumns, string[] whereColumns)
{ {
var sqlquerybulder= this.Context.Queryable<object>().SqlBuilder; var sqlquerybulder= this.Context.Queryable<object>().SqlBuilder;