Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 7acab78

Browse files
committed
Also convert DateTime values used in parameterized INSERT's to localtime as well.
1 parent 6ec0219 commit 7acab78

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProviderBase.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,18 @@ public override string GetQuotedValue(object value, Type fieldType)
229229
protected override object GetValueOrDbNull<T>(FieldDefinition fieldDef, object obj)
230230
{
231231
var value = GetValue<T>(fieldDef, obj);
232-
if (fieldDef.FieldType == typeof(DateTimeOffset) && value != null)
232+
if (value != null)
233233
{
234-
var dateTimeOffsetValue = (DateTimeOffset)value;
235-
return dateTimeOffsetValue.ToString("o");
234+
if (fieldDef.FieldType == typeof(DateTimeOffset))
235+
{
236+
var dateTimeOffsetValue = (DateTimeOffset)value;
237+
return dateTimeOffsetValue.ToString("o");
238+
}
239+
else if (fieldDef.FieldType == typeof(DateTime) && obj is DateTime)
240+
{
241+
var dateType = (DateTime)obj;
242+
return dateType.ToSqliteDateString();
243+
}
236244
}
237245

238246
return value ?? DBNull.Value;

tests/ServiceStack.OrmLite.Tests/Issues/UtcDateTimeIssueTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using NUnit.Framework;
3+
using ServiceStack.Text;
34

45
namespace ServiceStack.OrmLite.Tests.Issues
56
{
@@ -19,14 +20,24 @@ public void Test_DateTime_Select()
1920
{
2021
db.DropAndCreateTable<TestDate>();
2122

23+
DateTime.UtcNow.ToJson().Print();
24+
2225
db.Insert(new TestDate {
2326
Name = "Test name",
2427
ExpiryDate = DateTime.UtcNow.AddHours(1)
2528
});
2629

30+
//db.GetLastSql().Print();
31+
2732
var result = db.Select<TestDate>(q => q.ExpiryDate > DateTime.UtcNow);
33+
db.GetLastSql().Print();
2834

2935
Assert.That(result.Count, Is.EqualTo(1));
36+
37+
db.Select<TestDate>(q => q.ExpiryDate > DateTime.Now);
38+
db.GetLastSql().Print();
39+
40+
//db.Select<TestDate>().PrintDump();
3041
}
3142
}
3243
}

0 commit comments

Comments
 (0)