kai*_*kai 13
SELECT (strftime('%Y', 'now') - strftime('%Y', Birth_Date)) - (strftime('%m-%d', 'now') < strftime('%m-%d', Birth_Date));
Run Code Online (Sandbox Code Playgroud)
这个工作.
我只是移植了这个MySQL示例:http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html
Mar*_*tos 12
您可以将日期转换为浮点数并减去...
cast(strftime('%Y.%m%d', 'now') - strftime('%Y.%m%d', dob) as int)
Run Code Online (Sandbox Code Playgroud)
...哪里dob
是有效的SQLite时间字符串.
只是为了澄清kai 的答案(似乎现在编辑非常不受欢迎,并且评论有很强的大小限制和格式问题):
SELECT (strftime('%Y', 'now') - strftime('%Y', Birth_Date))
- (strftime('%m-%d', 'now') < strftime('%m-%d', Birth_Date) );
Run Code Online (Sandbox Code Playgroud)
假设我们想要整年:对于生命的第一个日历年,这将是零。
对于第二个日历年,这将取决于日期——即:
strftime('%m-%d', 'now') >= strftime('%m-%d', Birth_Date)
["case A "](我假设 sqlite 对两个日期字符串进行字典比较并返回一个整数值。)
对于任何其他日历年,它将是当前和第二个之间的年数- 即strftime('%Y', 'now') - strftime('%Y', Birth_Date) - 1
,加上与上述相同的年数。
在其它方面,我们减去 1从strftime('%Y', 'now') - strftime('%Y', Birth_Date)
仅在相反的“箱子甲”发生-即,当且仅当strftime('%m-%d', 'now') < strftime('%m-%d', Birth_Date)
,因此公式。
我发现这个也许会对你有帮助:
select
case
when date(dob, '+' ||
strftime('%Y', 'now') - strftime('%Y', dob) ||
' years') >= date('now')
then strftime('%Y', 'now') - strftime('%Y', dob)
else strftime('%Y', 'now') - strftime('%Y', dob) - 1
end
as age
from t;
Run Code Online (Sandbox Code Playgroud)
来自http://www.mail-archive.com/sqlite-users@sqlite.org/msg20525.html