社区Sqlite不处理日期& DateTimes正确

时间:2014-01-30 15:14:41

标签: sqlite mvvmcross

似乎这个新版本没有正确处理日期。请参阅以下观察:

1)使用以下内容时:

_conn.Create<MyTable>();

我在 MyTable 类中有一个 DateTime 字段,然后,它在SQLite DB中创建为 BIGINT 列。

2)如果我将 BIGINT 列更改为日期时间,以匹配 MyTable 中的日期时间定义class - 任何现有行都以 01/01/0001 的形式回读!

3)如果我尝试将日期值保存到该日期时间字段中,例如,将其设置为 DateTime.Today ,则将其保存为 30-12-1899 。并且您尝试保存的价值无关紧要。它始终保存为 30-12-1899

注意:我在Android上使用MVVMCross。

T.I.A。

1 个答案:

答案 0 :(得分:3)

SQLite-net代码中有一个关于如何存储DateTime的长篇故事。

您可以阅读更多相关信息,并在https://github.com/MvvmCross/MvvmCross/issues/213

上找到大量意见和链接

作为讨论的结果,新的SQLite端口使用StoreDateTimeAsTicks作为默认设置。

鉴于上述github问题线程中人们的意见权重,我建议使用StoreDateTimeAsTicks设置。如果存在错误(正如您在3中所建议的那样),那么我建议您通过SQLite-net社区来完成此操作 - 包括有关您正在使用的平台和版本的详细信息。

如果您想更改此设置,则可以传入:

 options.StoreDateTimeAsTicks = false

到SQLite工厂。

有关选项的更多信息,请参阅:https://github.com/MvvmCross/MvvmCross-SQLite/blob/master/Sqlite/Cirrious.MvvmCross.Community.Plugins.Sqlite/BaseClasses.cs#L27