尝试从SQLite表中获取具有姓名和出生日期的几件事,并且在下一个生日之前无法获得#天数。日期存储为SQLite的TEXT数据类型,格式为'%Y-%m-%d 00:00:00'。
我可以变老:
SELECT ((strftime('%s', 'now') - strftime('%s', dob)) / 31536000) AS age
我喜欢这个解决方案,以便首先显示最接近的生日:
ORDER BY SUBSTR(date('now'), 6) > SUBSTR(dob, 6), SUBSTR(dob, 6) ASC
但是,直到下一个生日,我才能打破我的大脑。我最近的尝试是从dob获取日期和月份子串的julianday并将其与当前年份连接以与julianday()进行比较,并将条件考虑到年度变化,但我还没有工作那个,但我希望有人有一个更优雅的解决方案。
答案 0 :(得分:0)
让我的可怕解决方案有效,所以这就是:
SELECT
CASE WHEN
julianday((SUBSTR(date('now'), 1, 5) || SUBSTR(dob, 6, 5))) > julianday('now')
THEN CAST(ROUND(
julianday((SUBSTR(date('now'), 1, 5) || SUBSTR(dob, 6, 5))) - julianday('now'), 0) AS INTEGER)
ELSE CAST(ROUND((
julianday(SUBSTR(date('now'), 1, 5) || '12-31') - julianday('now')) + (
julianday(SUBSTR(date('now'), 1, 5) || SUBSTR(dob, 6, 5)) - julianday(SUBSTR(date('now'), 1, 5) || '01-01')), 0) AS INTEGER)
END
AS dub FROM person;
只需要另外一个条件来改进舍入。