【发布时间】:2011-01-07 13:18:23
【问题描述】:
我将在 SQLite 数据库中存储日期时间值(使用 Delphi 和 DISqlite 库)。 db 的性质是它永远不需要在计算机或系统之间传输,因此互操作性不是一个约束。相反,我的重点是阅读速度。日期时间字段将被索引,我将对其进行大量搜索,并按顺序读取数千个日期时间值。
由于 SQLite 没有明确的日期时间值数据类型,因此有多种选择:
使用 REAL 数据类型并直接存储 Delphi 的 TDateTime 值:最快,加载时无需从字符串转换;不可能使用诸如 SQLiteSpy 之类的数据库管理器来调试日期,因为日期不是人类可读的。无法使用 SQLite 日期函数 (?)
使用简单的字符串格式,例如YYYYMMDDHHNNSS:需要转换,但在 CPU 上相对容易(无需扫描分隔符),数据是人类可读的。仍然无法使用 SQLite 日期函数。
做点别的。建议做什么?
我已经阅读了http://www.sqlite.org/lang_datefunc.html,但没有提及要使用什么数据类型,而且,由于没有接受过正式的编程教育,我不太了解朱利安日期的关注点。为什么要额外转换?我会大量阅读这些值,因此字符串和 TDateTime 之间的任何额外转换都会增加大量成本。
【问题讨论】:
-
我也见过stackoverflow.com/questions/1933720/…,但它没有回答我关于最佳方式是什么的问题,或者是否有真正令人信服的理由更喜欢 ISO 字符串格式(和相关的转换)直接插入 Delphi 的 TDateTime 值。
标签: delphi datetime sqlite format