0

我一直在使用 SQLiteAsyncConnection 进行所有数据库操作,最近我才知道它不允许表之间的关联。现在我正在移动代码以使用支持扩展的 SQLite.Net 扩展。当我将日期时间数据插入表中时,我发现了一个奇怪的问题。它完全改变了插入的日期时间。

App.db2.Insert(new FrequentlyAssignedShifts()
                {
                    ShiftStart = Convert.ToDateTime(btnShiftStart.Content.ToString()),
                    ShiftEnd = Convert.ToDateTime(btnShiftEnd.Content.ToString()),
                });

这就是建立连接的方式。

        string databasePath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "Scheduler.sqlite");
    public static SQLiteConnection db2;
    var platform = new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT();
    db2 = new SQLiteConnection(platform, databasePath);

我使用断点检查直到最后一点,是否插入了正确的数据。一切似乎都很好,它从按钮控件中获取了正确的日期,但是当它通过这部分代码时,日期值会发生变化。“ShiftStart & ShiftEnd”变量是表中的日期时间变量。有人可以请教。

感谢您阅读帖子。

4

1 回答 1

0

Maybe too late but as far I can see, the time is saved as ticks on the database, so instead of using "Date" or "Timestamp" or anything else, use bigint, thus, the field will hold the time as ticks using UTC, once you retrieve the value from database use the function "ToLocalTime()" from DateTime and vioala!!!!

于 2015-12-22T09:03:09.800 回答