MySQL的datediff等于一些值

时间:2019-01-08 03:43:40

标签: mysql

我的用例是这样的, 我有一个名为User_packages的表,那里有一个名为arrival_date的列。

我想要得到的是这个

到达日期-CURRENT_DATE()= 7

我想获得到达日期和CURRENT_DATE()之间的差等于7的日子。

我写了这个查询,但是有语法错误

SELECT * FROM booking_widget.User_packages,其中datediff(current_date()-arrival_date)= 7;

如何使用MySQL实现此目标?

3 个答案:

答案 0 :(得分:0)

DATEDIFF函数本身计算出一个差异,因此您只需要传递两个您想要的差异日期即可。

SELECT *
FROM booking_widget.User_packages
WHERE DATEDIFF(arrival_date, CURRENT_DATE()) = 7;

请注意,当DATEDIFF(d1, d2)大于d1d2返回一个正数,因此,如果您希望到达日期位于第一个参数中,则您可能希望将到达日期作为第一个参数传递未来。

答案 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;