Skip to content

Commit 973aa2b

Browse files
authored
Merge pull request #80 from serilog-contrib/fix/62
Fix bug converting TimeStamp column to DateTime #62.
2 parents 4d56716 + b16f0ba commit 973aa2b

File tree

4 files changed

+45
-4
lines changed

4 files changed

+45
-4
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using Dapper;
2+
using System;
3+
using System.Data;
4+
using System.Globalization;
5+
6+
namespace Serilog.Ui.MsSqlServerProvider;
7+
8+
public class DapperDateTimeHandler : SqlMapper.TypeHandler<DateTime>
9+
{
10+
private static string[] Formats = new[] {
11+
"M/d/yyyy h:mm:ss tt zzz",
12+
"M/dd/yyyy h:mm:ss tt zzz",
13+
"M/d/yyyy h:mm:ss tt",
14+
"M/dd/yyyy h:mm:ss tt",
15+
"M/dd/yyyy hh:mm:ss",
16+
"MM/dd/yyyy HH:mm:ss",
17+
"MM/d/yyyy hh:mm:ss tt",
18+
"M/dd/yyyy hh:mm:ss tt",
19+
"MM/dd/yyyy hh:mm:ss tt",
20+
};
21+
22+
public override void SetValue(IDbDataParameter parameter, DateTime value)
23+
{
24+
parameter.Value = value;
25+
}
26+
27+
public override DateTime Parse(object value)
28+
{
29+
var valueStr = value.ToString();
30+
DateTime.TryParse(valueStr, out var timeStamp);
31+
32+
if (timeStamp == default)
33+
DateTime.TryParseExact(valueStr, Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out timeStamp);
34+
35+
return timeStamp;
36+
}
37+
}

src/Serilog.Ui.MsSqlServerProvider/Serilog.Ui.MsSqlServerProvider.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
55
<LangVersion>latest</LangVersion>
6-
<Version>2.2.0</Version>
6+
<Version>2.2.1</Version>
77
</PropertyGroup>
88

99
<ItemGroup>

src/Serilog.Ui.MsSqlServerProvider/Serilog.Ui.MsSqlServerProvider.nuspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
<icon>assets\icon.png</icon>
1818
<dependencies>
1919
<group targetFramework=".NETStandard2.0">
20-
<dependency id="Ardalis.GuardClauses" version="4.0.1" exclude="Build,Analyzers" />
2120
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="3.1.3" exclude="Build,Analyzers" />
2221
<dependency id="Dapper" version="2.0.35" exclude="Build,Analyzers" />
2322
<dependency id="Microsoft.Data.SqlClient" version="5.1.0" exclude="Build,Analyzers" />

src/Serilog.Ui.MsSqlServerProvider/SqlServerDataProvider.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ public SqlServerDataProvider(RelationalDbOptions options)
1818
_options = options ?? throw new ArgumentNullException(nameof(options));
1919
}
2020

21+
static SqlServerDataProvider()
22+
{
23+
SqlMapper.AddTypeHandler(new DapperDateTimeHandler());
24+
}
25+
26+
public string Name => _options.ToDataProviderName("MsSQL");
27+
2128
public async Task<(IEnumerable<LogModel>, int)> FetchDataAsync(
2229
int page,
2330
int count,
@@ -35,8 +42,6 @@ public SqlServerDataProvider(RelationalDbOptions options)
3542
return (await logsTask, await logCountTask);
3643
}
3744

38-
public string Name => _options.ToDataProviderName("MsSQL");
39-
4045
private async Task<IEnumerable<LogModel>> GetLogsAsync(
4146
int page,
4247
int count,

0 commit comments

Comments
 (0)