diff --git a/src/SQLite.Net/SQLiteCommand.cs b/src/SQLite.Net/SQLiteCommand.cs index 9db0d705b..e50a819fe 100755 --- a/src/SQLite.Net/SQLiteCommand.cs +++ b/src/SQLite.Net/SQLiteCommand.cs @@ -345,12 +345,20 @@ internal static void BindParameter(ISQLiteApi isqLite3Api, IDbStatement stmt, in { if (storeDateTimeAsTicks) { - long ticks = ((DateTime) value).ToUniversalTime().Ticks; + DateTime date = (DateTime)value; + if (date != DateTime.MinValue) + date = date.ToUniversalTime(); + + long ticks = date.Ticks; isqLite3Api.BindInt64(stmt, index, ticks); } else { - string val = ((DateTime) value).ToUniversalTime().ToString(DateTimeFormat, CultureInfo.InvariantCulture); + DateTime date = (DateTime)value; + if (date != DateTime.MinValue) + date = date.ToUniversalTime(); + + string val = date.ToString(DateTimeFormat, CultureInfo.InvariantCulture); isqLite3Api.BindText16(stmt, index, val, -1, NegativePointer); } } diff --git a/tests/DateTimeTest.cs b/tests/DateTimeTest.cs index 5170f8bbc..7fd01360c 100644 --- a/tests/DateTimeTest.cs +++ b/tests/DateTimeTest.cs @@ -17,6 +17,7 @@ private class TestObj public string Name { get; set; } public DateTime Time1 { get; set; } public DateTime Time2 { get; set; } + public DateTime Time3 { get; set; } } @@ -28,6 +29,7 @@ private async Task TestAsyncDateTime(SQLiteAsyncConnection db, bool storeDateTim { Time1 = DateTime.UtcNow, Time2 = DateTime.Now, + Time3 = DateTime.MinValue }; await db.InsertAsync(org); var fromDb = await db.GetAsync(org.Id); @@ -36,6 +38,8 @@ private async Task TestAsyncDateTime(SQLiteAsyncConnection db, bool storeDateTim Assert.AreEqual(fromDb.Time1.ToLocalTime(), org.Time1.ToLocalTime()); Assert.AreEqual(fromDb.Time2.ToLocalTime(), org.Time2.ToLocalTime()); + + Assert.AreEqual(fromDb.Time3, org.Time3); } private void TestDateTime(TestDb db) @@ -49,6 +53,7 @@ private void TestDateTime(TestDb db) { Time1 = DateTime.UtcNow, Time2 = DateTime.Now, + Time3 = DateTime.MinValue }; db.Insert(org); var fromDb = db.Get(org.Id); @@ -57,6 +62,8 @@ private void TestDateTime(TestDb db) Assert.AreEqual(fromDb.Time1.ToLocalTime(), org.Time1.ToLocalTime()); Assert.AreEqual(fromDb.Time2.ToLocalTime(), org.Time2.ToLocalTime()); + + Assert.AreEqual(fromDb.Time3, org.Time3); } [Test]