2

在我的程序中,我需要将人们的生日保存在 sqlite 数据库中。然后在程序中我需要显示生日以及他们的年龄。

他们是一种将日期保存在一个列中的特殊方法,还是我需要分别保存它们的日期、月份和年份。

我的另一个问题是如何将他们的年龄准确地计算为年、月和日。是否可以使用某种功能来做到这一点。

4

2 回答 2

3

日期可以作为文本、实数或整数存储在单列中,并且可以与内置date函数一起使用。

文档:

1.2 日期和时间数据类型

SQLite 没有为存储日期和/或时间预留存储类。相反,SQLite 的内置日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值:

TEXT作为 ISO8601 字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
REAL作为儒略日数字,根据预测的公历,自公元前 4714 年 11 月 24 日格林威治中午以来的天数。
INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。

从数据库中选择用户年龄的一个例子是:

-- '2001-01-01' would be the text column where you store the birthdate 
SELECT (strftime('%Y', 'now') - strftime('%Y', '2001-01-01')) - (strftime('%m-%d', 'now') < strftime('%m-%d', '2001-01-01')) AS 'Years'

[reference]

于 2012-12-04T21:15:58.373 回答
1

http://www.sqlite.org/datatype3.html上的 sqlite 文档建议使用 ISO8601 字符串。SQLite 还提供了一些可以在查询中使用的函数:http ://www.sqlite.org/lang_datefunc.html

于 2012-12-04T21:17:53.090 回答