SELECT t_employee.ename, t_employee.salary, (CURDATE() - birthday)
FROM t_employee
WHERE (CURDATE() - birthday) > (40 * 365)
ORDER BY salary DESC;
SELECT t_employee.ename, t_employee.salary, DATEDIFF(CURDATE() , birthday)
FROM t_employee
WHERE DATEDIFF(CURDATE() , birthday) > 40 * 365
ORDER BY salary DESC;
返回的结果是不一样的!
问了ai解答如下:
在MySQL中,DATEDIFF(CURDATE(), birthday) 和 (CURDATE() - birthday) 确实有所不同:
1、DATEDIFF:
DATEDIFF(CURDATE(), birthday) 返回的是两个日期之间的天数差。
这个函数专门用于计算两个日期之间的差异,并返回一个整数值。
2、减法运算:
(CURDATE() - birthday) 同样可以用来计算两个日期之间的差距。
这种方式返回的结果是一个 INTERVAL 类型,包含了日期差值以及单位信息(如天数、月数等)。
主要区别在于:
DATEDIFF 只返回天数差,结果是一个整数。
减法运算返回的是一个包含更多时间单位信息的间隔对象。
如果你只需要天数差,建议使用 DATEDIFF 函数。如果需要更详细的时间间隔信息,则可以考虑使用减法运算。