在SQLite中存储日期和计算年龄

时间:2012-12-04 21:09:26

标签: c++ database sqlite

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

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

我的另一个问题是如何准确地将他们的年龄作为年,月和日。是否有可能通过某种功能来实现这一点。

2 个答案:

答案 0 :(得分:3)

日期可以作为text,real或int存储在单个列中,并且可以与内置date函数一起使用。

Documentation:

  

1。1日期和时间数据类型

     

SQLite没有为存储日期留出的存储类   和/或时间。相反,SQLite的内置Date And Time Functions   能够将日期和时间存储为TEXT,REAL或INTEGER   值:

     

TEXT 为ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
   REAL 作为朱利安日数字,即公元前4714年11月24日格林威治中午以来的天数。根据预示   公历。
   INTEGER as Unix Time,自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]

答案 1 :(得分:1)

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