首页 > 解决方案 > sql 中对本机函数“DATEDIFF”的调用中的参数计数不正确

问题描述

我应该使用什么命令来根据这个问题进行输出:

显示截至今天已加入会员超过 700 天的客户的所有值

这是我创建的表:

表客户

我尝试过使用其他引用DATEDIFF(),但它总是无效的:

SELECT * FROM Customers where DATEDIFF(DAY,customer_join,GETDATE())>700;

标签: sqldatetimemariadbdate-arithmetic

解决方案


在 MySQL/MariaDB 中,与 SQL Server 不同,DATEDIFF()它只接受两个参数,并返回它们之间的整数天数。我们有timestampdiff(),它需要三个参数。

此外,getdate()这在 MySQL 中不是一个东西(这是一个定制的 SQL Server 函数)。

您在这里并不需要日期功能。我会用简单的数据算术来表达这个逻辑:

select *
from customers
where customer_join < current_date - interval 700 day

此表达式可以利用 上的索引customer_join

根据您是否要考虑customer_join(如果有)的时间部分,您可能要使用now()而不是current_date.


推荐阅读