我有一列(bday
),用于存储用户的生日信息。
我搜索了类似的问题,发现一个问题
select * from users where datediff(year, bday, getdate()) between 18 and 22;
但是,当我运行此命令时,我会得到
#1582 - Incorrect parameter count in the call to native function 'datediff'
正确的方法是什么?
答案 0 :(得分:0)
错误1582是MySQL错误,因此大概是您在使用MySQL。
您可能想要的代码是:
select u.*
from users u
where u.bdate >= curdate() - interval 22 year and
u.bdate < curdate() - interval 18 year;
这并不完全等同于SQL Server(或Amazon Redshift)datediff(year . . . )
函数。那会更像:
select u.*
from users u
where year(u.bdate) - year(curdate()) between 18 and 22;
(注意:此计算中可能存在一个错误的错误。)
答案 1 :(得分:0)
根据MariaDB DATEDIFF的文档,只有两个参数:
DATEDIFF(expr1,expr2)
expr1
和expr2
是日期或日期时间表达式。计算中仅使用值的日期部分,并且它返回(expr1 – expr2
),表示为从一个日期到另一个日期的天数值。
所以您的查询应该是:
select * from users where datediff(bday,getdate()) between 18 and 22;