我将在SQLite数据库中存储日期时间值(使用Delphi和DISqlite库)。数据库的性质是永远不需要在计算机或系统之间传输,因此互操作性不是限制。我的重点是阅读速度。日期时间字段将被索引,我将经常进行搜索,并按顺序读取数千个日期时间值。
由于SQLite没有显式的日期时间数据类型,有几种选择:
- 使用REAL数据类型并直接存储Delphi的TDateTime值:最快,在加载时无需从字符串转换;无法使用SQLiteSpy等数据库管理器调试日期,因为日期不可读。不能使用SQLite日期函数 (?) - 使用简单的字符串格式,例如YYYYMMDDHHNNSS:需要转换,但在CPU上相对容易(无需扫描分隔符),数据可读性强。仍然无法使用SQLite日期函数。 - 做其他事情。建议做什么?
我已经阅读了http://www.sqlite.org/lang_datefunc.html,但没有提到使用什么数据类型,而且由于我没有受过正式的编程教育,我不太明白对儒略日的关注。为什么需要额外的转换?我将经常读取这些值,因此在字符串和TDateTime之间进行任何额外的转换都会增加显著的成本。
由于SQLite没有显式的日期时间数据类型,有几种选择:
- 使用REAL数据类型并直接存储Delphi的TDateTime值:最快,在加载时无需从字符串转换;无法使用SQLiteSpy等数据库管理器调试日期,因为日期不可读。不能使用SQLite日期函数 (?) - 使用简单的字符串格式,例如YYYYMMDDHHNNSS:需要转换,但在CPU上相对容易(无需扫描分隔符),数据可读性强。仍然无法使用SQLite日期函数。 - 做其他事情。建议做什么?
我已经阅读了http://www.sqlite.org/lang_datefunc.html,但没有提到使用什么数据类型,而且由于我没有受过正式的编程教育,我不太明白对儒略日的关注。为什么需要额外的转换?我将经常读取这些值,因此在字符串和TDateTime之间进行任何额外的转换都会增加显著的成本。