我正在创建Android应用程序,需要保存创建记录的日期/时间.然而,SQLite文档说,"SQLite没有用于存储日期和/或时间的存储类",并且它"能够将日期和时间存储为TEXT,REAL或INTEGER值".
是否存在使用一种类型而非另一种类型的技术原因?并且单个列可以存储从行到行的三种格式中的任何一种格式吗?
我需要稍后比较日期.例如,在我的应用程序中,我将显示在日期A到日期B之间创建的所有记录.我担心没有真正的DATETIME列可能会使比较变得困难.
neo*_*108 79
SQlite没有特定的日期时间类型.您可以使用TEXT,REAL或INTEGER类型,无论适合您的需要.
SQLite没有为存储日期和/或时间而预留的存储类.相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT,REAL或INTEGER值:
- TEXT为ISO8601字符串("YYYY-MM-DD HH:MM:SS.SSS").
- 真实如朱利安日数,根据公历4714年11月24日格林威治中午以来的天数.
- INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数.
应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换.
可以在此处找到 SQLite内置的日期和时间函数.
Die*_*ano 19
SQLite没有为存储日期和/或时间而预留的存储类.相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT,REAL或INTEGER值:
TEXT为ISO8601字符串("YYYY-MM-DD HH:MM:SS.SSS").真实如朱利安日数,根据公历4714年11月24日格林威治中午以来的天数.INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数.应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换.
话虽如此,我会使用INTEGER并存储自Unix纪元(1970-01-01 00:00:00 UTC)以来的秒数.
Zso*_*Zso 12
SQLite的一个强大功能是允许您选择存储类型.三种不同可能性中的每一种的优点/缺点:
ISO8601字符串
实数
整数
如果您需要比较不同的类型或导出到外部应用程序,您可以根据需要自由使用SQLite 自己的日期时间转换功能.
小智 7
对于几乎所有的日期和时间问题,我更喜欢简化事物,非常非常简单...以整数存储的秒数.
数据库,平面文件等中的整数将始终作为整数支持.您可以进行一些数学运算并将其转换为其他类型,您可以根据需要格式化日期.
这样做,你不必担心[在这里插入当前最喜欢的数据库]被[未来最喜欢的数据库]替换,而这恰好没有使用你今天选择的日期格式.
这只是一个小的数学开销(例如.方法 - 需要两秒钟,如果有必要我会发布一个要点)并简化日期/时间以后的大量操作.