在SQLite中保存日期?

时间:2010-10-31 15:01:36

标签: c# sqlite datetime

我从这个链接中找到了这个:

http://www.sqlite.org/datatype3.html

  

1。1日期和时间数据类型

     

SQLite没有存储类   留出用于存储日期和/或   倍。相反,内置的日期和   SQLite的时间函数是有能力的   将日期和时间存储为TEXT,   REAL或INTEGER值:

     

TEXT 为ISO8601字符串(“YYYY-MM-DD   HH:MM:SS.SSS“)。

     作为朱利安日,

真实   数字,自中午以来的天数   公元前4714年11月24日在格林威治   根据预感格里高利安   日历。

     

INTEGER 作为Unix时间,   自1970-01-01以来的秒数   00:00:00 UTC应用可以选择   在任何一个中存储日期和时间   这些格式和自由转换   使用内置格式之间的格式   日期和时间函数。日期和时间函数。

我有点困惑,我应该使用它。我正在创建一个Windows Forms C#应用程序,并将使用构建的DateTime控件。

哪种选择最适合我?我想TEXT会,但也许我错了。我是SQLite的新手。

谢谢。

2 个答案:

答案 0 :(得分:3)

我假设你正在使用System.Data.SQLite?即使SQLite本身无法识别日期时间数据类型,此数据提供程序也会识别它。

例如,如果使用SQLiteDataAdapter使用select语句填充数据表,则如果列的数据类型为datetime,则返回的数据列将为datetime。

提供程序存在限制:当select包含多个表时,它无法猜测数据类型。在这种情况下,您可以通过在此前面添加查询来声明返回的数据类型:

types [integer], [text], [boolean], [datetime];
select A.id, A.subject, B.isactive, B.due_date from ...

提供商将数据存储为2009-04-01 17:42:38.828125等文本。 SQLite适用于这种格式,例如你可以用第二天计算:

select datetime('2009-04-01 17:42:38.828125', '+1 days');

编辑:您将数据类型指定为日期时间,如下所示:

create table C ( d datetime );

答案 1 :(得分:0)

我一直在使用Text并且没有任何问题。