从MySQL数据库获取数据后,无需计算自事件和事件已经过去了多少年,或已有多少年了,您可以使用以下查询在MySQL端转换日期。它通过从给定日期减去当前日期并将其格式化为年份来工作。将给定值添加到0,将给定的字符串DATE_FORMAT()转换为整数。
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS('2000-07-23 09:20:59')), '%Y') + 0;
这样得到的结果为8。您还可以仅将年,月和日的字符串传递给该函数。
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS('2000-07-23')), '%Y') + 0;
得出38的结果。
该函数要求找到格式正确的MySQL日期字符串,否则将产生错误。此函数中使用以下字符串。
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS('13/01/1970')), '%Y') + 0;
除了产生NULL返回值外,还会产生以下错误。
Truncated incorrect datetime value: '13/01/1970'
最后,此查询仅适用于年份的%Y格式字符串(以4位数字表示),而其他日期格式字符串则没有成功。