首页 > 解决方案 > 是否有将日期转换为年龄的 SQL 查询

问题描述

假设我有这个查询:

SELECT CURRENT_DATE-DOB as age FROM customerDetails 
WHERE customerid = (SELECT max(customerid) FROM 
customerDetails)

在 SQLTE3 中,将客户的出生日期转换为格式,例如 2002-08-11(作为日期字段)到他们当前的年龄,例如 17,我可以为 MYSQL 查询重复相同的逻辑吗?

语法是否不同...因为相同的查询在 MYSQL Workbench 而不是 SQLite3 的 DB Broswswer 中运行时会产生这种情况

20198120

标签: mysqlsqldate

解决方案


在 MySQL 中减去日期并不符合您的预期。它实际上将日期转换为整数,然后减去它们。所以通常 date2020-01-22变成 integer 20200122。这不是你想要的。

计算年龄的一种方法是使用日期函数TIMESTAMPDIFF(),如下所示:

timestampdiff(year, dob, curdate())

推荐阅读