Другое решение состоит в том, чтобы использовать день года %j
как часть года, разделив его на 365,0.Таким образом, вы получите:
select strftime('%Y', 'now') + strftime('%j', 'now') / 365.2422) - (strftime('%Y', Birth_Date) + strftime('%j', Birth_Date) / 365.2422);
Затем вы можете привести результат к целому числу:
select CAST(strftime('%Y', 'now') + strftime('%j', 'now') / 365.2422) - (strftime('%Y', Birth_Date) + strftime('%j', Birth_Date) / 365.2422) AS INT);
или использовать ROUND () для округления результата:
select round(strftime('%Y', 'now') + strftime('%j', 'now') / 365.2422) - (strftime('%Y', Birth_Date) + strftime('%j', Birth_Date) / 365.2422));
Я обновил расчет, чтобы он использовал правильное десятичное число дней в солнечном году, как отметил Роберт в комментарии ниже.
Разница с другими расчетами заключается в том, что результат этого вычислениядесятичное число, которое может быть приведено к целому числу (чтобы получить точное количество лет) или округленному (чтобы получить приблизительное количество лет).
Для дней рождения приблизительное количество лет может быть не таким значимым, но для возраста того, что вы купили, это имеет больше смысла.