MySql Support DateTimeOffset

This commit is contained in:
sunkaixuna 2021-12-07 18:44:17 +08:00
parent d9006ea434
commit 7ab2e9ce6d
4 changed files with 28 additions and 0 deletions

View File

@ -37,6 +37,17 @@ namespace OrmTest
}).ToList();
Db.CodeFirst.InitTables<UnitTest012213>();
Db.CodeFirst.InitTables<UnitTest3131>();
Db.CodeFirst.InitTables<UnitDateOfTime2>();
Db.Insertable(new UnitDateOfTime2() { DateTimeOffset1 = DateTimeOffset.Now }).ExecuteCommand();
var list2 = Db.Queryable<UnitDateOfTime2>().ToList();
}
public class UnitDateOfTime2
{
[SqlSugar.SugarColumn(ColumnDataType ="datetime(3)")]
public DateTimeOffset DateTimeOffset1 { get; set; }
}
public class UnitTest3131

View File

@ -22,6 +22,8 @@ namespace SqlSugar
csharpTypeName = "bool";
if (csharpTypeName == "SByte")
csharpTypeName = "Byte";
if (csharpTypeName == "DateTimeOffset")
csharpTypeName = "DateTime";
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
return mappings.HasValue() ? mappings.First().Key : "varchar";
}

View File

@ -117,6 +117,11 @@ namespace SqlSugar
{
sqlParameter.DbType = System.Data.DbType.AnsiString;
}
if (parameter.DbType== System.Data.DbType.DateTimeOffset)
{
sqlParameter.Value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)sqlParameter.Value);
sqlParameter.DbType = System.Data.DbType.DateTime;
}
++index;
}
return result;

View File

@ -17,6 +17,16 @@ namespace SqlSugar
public class UtilMethods
{
internal static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{
if (dateTime.Offset.Equals(TimeSpan.Zero))
return dateTime.UtcDateTime;
else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
else
return dateTime.DateTime;
}
internal static object To(object value, Type destinationType)
{
return To(value, destinationType, CultureInfo.InvariantCulture);