过去我已经玩过一些SQLite,我很喜欢它,因此我想将它用于新项目。将日期时间存储到SQL并将其作为整数
第1步是创建数据库,我需要创建一个DateStamp
字段,其中我在事件发生时放置时间戳。
在SQLite Documentation,日期和时间数据类型定义如下:
1.2日期和时间数据类型
SQLite没有存储类,用于存储日期 搁置和/或次数。取而代之的是,内置的SQLite 的日期和时间函数能够存储日期和时间为TEXT,REAL或INTEGER 值:
- TEXT为ISO8601字符串(“YYYY-MM-DD HH:MM :SS.SSS“)。
- 真实的Julian日数,自中午4714年11月24日格林威治中午以来的天数。根据公历 公历。
- INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。
应用程序可以选择存储日期和时间在任何这些 格式和自由使用内置的日期和时间 功能格式之间转换。
我宁愿不保存日期为文本,而因为Windows DateTime对象不回去11月24日,4714公元前,我认为我留下了存储DateTime值为整数。
那么,如何将DateTime作为整数存储?我会在基准日期和我想要的日期之间获得TimeSpan
,提取天数并存储它?
// is this a UTC date?
private static readonly DateTime utc1970_01_01 = new DateTime(1970, 1, 1);
public static double GetIntDate(DateTime dateTime) {
// FYI: subtracting dates in .NET returns a time span object
return (dateTime - nov24_4714bc).TotalSeconds;
}
是吗?这是其他人正在使用SQLite吗?它还说,SQLite存储UTC时间的日期时间,所以我需要再次转换最重要的。
以前肯定有人这样做过。我希望看到已经有人处理这些输入的工具。 SQLite有一些built in functions,但我真的不明白如何使用它们。
解决:
嘛便便。
它可以这么简单吗?
public static long ToFileTimeUtc(DateTime dateTime) {
return dateTime.ToFileTimeUtc();
}
public static DateTime FromFileTimeUtc(long fileTimeUtc) {
return DateTime.FromFileTimeUtc(fileTimeUtc);
}
评论?
我可以不这样做吗?
如果您觉得您的问题已被您的答案回答,请取消删除您的答案并从问题标题中删除[已解决]。 – naveen 2012-07-22 18:50:11
现在我疯了! Mystere Man说我需要删除它(我得到了一个downvote),现在你说我应该加回来。尝试在SO上进行政治上的纠正是困难和混乱的。 – jp2code 2012-07-22 18:53:51