当前位置: 首页 > 面试题库 >

以整数形式获取MySQL中两个日期之间的年份差异

宗政昱
2023-03-14
问题内容

我正在尝试计算数据库中一个人的年龄。
让我们假设有一个简单的表:

student(id, birth_date);

id是主键(实际上,表更复杂,但我已经对其进行了简化)。
我想要一个人多大年龄:

select id, datediff(curdate(),birth_date) 
from student

但是它返回的结果是几天而不是几年,我可以将其除以365:

select id, datediff(curdate(),birth_date) / 365
from student

但是它返回一个浮点值,我想要一个整数。
这样我就可以计算出年份:

select id, year(curdate())-year(birth_date) 
from student

但是有一个问题:例如现在是5月,如果一个战争发生在1970年6月,他仍然31岁而不是32岁,但表达式返回32。
我不能摆脱这个问题,有人可以帮我吗?


问题答案:

对于遇到此问题的任何人:

可以完成的另一种方法是:

SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student

在几个月的差异,更换YEARMONTH,日子替换YEARDAY

希望有帮助!



 类似资料:
  • 嗯,我在这里发现了很多这样的问题,试图获得年、月和日的两个日期之间的差异。。。但没有满足我要求的答案。 所以我写了一些计算的东西,它似乎是有效的,但也许这里的一些专家可以进行更正,或者帮助使这更简单。

  • 问题内容: 如何以格式计算两个日期之间的差并以秒或毫秒为单位获取结果? 问题答案: 因此,您可以为您的目的使用。

  • 我已经搜索了4个小时了,但是还没有找到一个用JavaScript计算两个日期(年、月和天)之间差异的解决方案,比如:2010年4月10日是3年、x月和y天之前。 有很多解决方案,但它们只提供了日、月或年的格式差异,或者它们不正确(意味着没有考虑一个月或闰年的实际天数,等等)。做那件事真的有那么难吗? 我看了一下: http://momentjs.com/->只能输出年、月或天的差异 http://

  • 问题内容: 如何计算JavaScript中两个Date()对象的差异,而只返回差异中的月数? 任何帮助将是巨大的:) 问题答案: “差异中的月数”的定义要经过很多解释。:-) 您可以从JavaScript日期对象获取年,月和日。根据您要查找的信息,可以使用这些信息来计算两个时间点之间有多少个月。 例如,现成的,它找出两个日期之间有多少 整月 ,而不计算部分月份(例如,不包括每个日期所在的月份):

  • 问题内容: 我需要获取MySQL上几个日期中包含的天数。 例如: 入住日期是 离开日期 当天差是3 问题答案: 怎么样 DATEDIFF 功能? 引用手册页面: DATEDIFF()返回expr1 – expr2,表示为从一个日期到另一个日期的天数。expr1和expr2是日期或日期和时间表达式。在计算中仅使用值的日期部分 就您而言,您可以使用: 但是请注意,日期应写为,而不是您发布的日期。

  • 返回两个日期之间相差的天数。 计算 Date 对象之间的差异(以天为单位)。 const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24); getDaysDiffBetweenDates(new Date('2017-12-13'), ne