c# – SQLite日期和时间数据类型
我正在尝试构建一个漂亮的小型数据库,以便在移动应用程序上运行(
Windows Mobile 5,如果你很好奇).
在SQLite Documentation中,日期和时间数据类型定义如下:
因此,将我的DateTime值保存为REAL(float)或INTEGER的大小相同. TEXT格式怎么样? YYYY-MM-DD HH:MM:SS.SSS中有23个字符.每个字符是8个字节吗?如果是这样,那就是以文本格式存储的巨大空间(这正是我目前所做的). REAL格式怎么样?我是否定义基准日期为公元前4714年11月24日? (我甚至不确定Visual Studio 2008是否允许我这样做.我从未尝试过.)然后在我想要的基准日期和日期之间获取TimeSpan,提取天数并存储它? // is this how to declare this date? private static readonly DateTime nov24_4714bc = new DateTime(-4714,11,24); public static double GetRealDate(DateTime dateTime) { // FYI: subtracting dates in .NET returns a time span object return (dateTime - nov24_4714bc).TotalDays; } INTEGER格式怎么样?我会定义1970-01-01 00:00:00 UTC的基准日期(请告诉我该怎么做!),然后在基准日期和输入日期之间获取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; } 对此有何帮助?我有点困惑几点. 解决方法
>如果“人类可读性”很重要,请使用TEXT格式.
>如果节省空间很重要,请使用其中一种数字格式. 如果您不需要毫秒精度,则可以通过仅包含您需要的部分来节省TEXT格式的空间. SQLite日期/时间函数接受3种较短格式: > YYYY-MM-DD HH:MM:SS(19个字符) (绝对不要使用MM / DD / YYYY;它不受支持,并且排序不正确.)
你不能:System.DateTime只支持1到9999年.你需要选择一个不同的基准日期,然后执行(dateTime – baseDate).TotalDays baseDateJD,其中baseDateJD是基准日期的Julian日期.一些合理的选择是: > 0001-01-01 = JD 1721425.5> 1970-01-01 = JD 2440587.5> 2000-01-01 = JD 2451544.5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – React Error(只有一个ReactOwner可以有re
- Swift项目引入第三方库的方法
- c# – ASP.NET Core MVC项目似乎会自动添加AntiForgery令牌
- c# – 为什么Regex.Match只返回1个结果?
- haskell – cabal可以警告依赖关系中未使用的包吗?
- xml 中的二进制数据
- 使用doxygen为带有XML注释的现有C#代码创建文档
- 为什么xcode console字体大于编辑器字体
- c# – DataGridViewCheckBoxColumn:布尔列上的FormatExcep
- sqlite错误处理:library routine called out of sequence