From 02e7e72bb5602dfd57887e3e195428957407fb1c Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Wed, 30 Dec 2020 18:38:55 +0800 Subject: [PATCH] MySql Support timeoffset --- .../IDataReaderEntityBuilder.cs | 2 ++ .../DbBindProvider/IDataRecordExtensions.cs | 24 +++++++++++++++---- Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs | 7 ++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index a418a8d8a..5a2dda3e9 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -280,6 +280,8 @@ namespace SqlSugar method = isNullableType ? getConvertDateTime : getDateTime; if (bindProperyTypeName == "datetime" && dbTypeName.ToLower() == "time") method = isNullableType ? getConvertTime : getTime; + if (bindProperyTypeName == "datetimeoffset") + method = isNullableType ? getConvertdatetimeoffset : getdatetimeoffset; break; case CSharpDataType.@decimal: CheckType(bind.DecimalThrow, bindProperyTypeName, validPropertyName, propertyName); diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs index 1dfe2536e..f9da07ede 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs @@ -217,8 +217,16 @@ namespace SqlSugar { return default(DateTimeOffset); } - var result = (DateTimeOffset)dr.GetValue(i); - return result; + var date = dr.GetValue(i); + if (date is DateTime) + { + return UtilMethods.GetDateTimeOffsetByDateTime((DateTime)(date)); + } + else + { + var result = (DateTimeOffset)date; + return result; + } } public static DateTimeOffset? GetConvertdatetimeoffset(this IDataRecord dr, int i) @@ -227,8 +235,16 @@ namespace SqlSugar { return default(DateTimeOffset); } - var result = (DateTimeOffset)dr.GetValue(i); - return result; + var date = dr.GetValue(i); + if (date is DateTime) + { + return UtilMethods.GetDateTimeOffsetByDateTime((DateTime)(date)); + } + else + { + var result = (DateTimeOffset)date; + return result; + } } diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs index 333589ea9..c979cdefb 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs @@ -154,6 +154,13 @@ namespace SqlSugar return (T)Convert.ChangeType(obj, typeof(T)); } + internal static DateTimeOffset GetDateTimeOffsetByDateTime(DateTime date) + { + date = DateTime.SpecifyKind(date, DateTimeKind.Utc); + DateTimeOffset utcTime2 = date; + return utcTime2; + } + internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex, string append = null) { if (appendSql.HasValue() && parameters.HasValue())