我的用例是这样的,
我有一个名为User_packages
的表,那里有一个名为arrival_date
的列。
我想要得到的是这个
到达日期-CURRENT_DATE()= 7
我想获得到达日期和CURRENT_DATE()之间的差等于7的日子。
我写了这个查询,但是有语法错误
SELECT * FROM booking_widget.User_packages,其中datediff(current_date()-arrival_date)= 7;
如何使用MySQL实现此目标?
答案 0 :(得分:0)
DATEDIFF
函数本身计算出一个差异,因此您只需要传递两个您想要的差异日期即可。
SELECT *
FROM booking_widget.User_packages
WHERE DATEDIFF(arrival_date, CURRENT_DATE()) = 7;
请注意,当DATEDIFF(d1, d2)
大于d1
时d2
返回一个正数,因此,如果您希望到达日期位于第一个参数中,则您可能希望将到达日期作为第一个参数传递未来。
答案 1 :(得分:0)
SELECT *
FROM booking_widget.User_packages
where datediff(current_date(),arrival_date) = 7;
datediff()
执行减法,因此您将两个日期作为参数see datediff
DATEDIFF(expr1,expr2)
返回expr1-expr2,表示为 天
因此日期的顺序对于返回正数很重要,例如
SELECT *
FROM booking_widget.User_packages
where datediff(arrival_date,current_date()) = 7;
或者,如果顺序对您而言并不重要,但差距值是,请添加abs()
SELECT *
FROM booking_widget.User_packages
where abs(datediff(arrival_date,current_date())) = 7;
答案 2 :(得分:0)
使用PROPRER DATEDIFF
函数,
就像。
SELECT DATEDIFF(DAY,arrival_date,CURRENT_DATE())
您的查询是
SELECT *,DATEDIFF(DAY,arrival_date,CURRENT_DATE()) FROM booking_widget.User_packages where DATEDIFF(DAY,arrival_date,CURRENT_DATE()) = 7;