如何从where子句中的select中使用变量

时间:2019-04-30 14:58:46

标签: mysql sql database

我将两个日期之间的中点输入变量,我想检查今天是否是中点。我可以毫无问题地选择所需的内容,但是一旦将变量放入WHERE子句中,它似乎就无法工作。

我尝试输出我需要的两个日期,它们都相同,但是当我在WHERE子句中比较它们时,没有任何结果。

这向我显示列和middle_date和todays_date在同一列中是相同的

SELECT @order_date := order_date, @delivery_date := delivery_date,
ROUND(UNIX_TIMESTAMP(ADDDATE(@order_date, ((DATEDIFF(@delivery_date, @order_date)/2)))),0) AS middle_date, 
UNIX_TIMESTAMP(DATE(NOW())) AS todays_date FROM `order`

enter image description here

现在,当我这样做时,没有任何结果:

SELECT @order_date := order_date, @delivery_date := delivery_date,
ROUND(UNIX_TIMESTAMP(ADDDATE(@order_date, ((DATEDIFF(@delivery_date, @order_date)/2)))),0) AS middle_date, 
UNIX_TIMESTAMP(DATE(NOW())) AS todays_date FROM `order`
WHERE ROUND(UNIX_TIMESTAMP(ADDDATE(@order_date, ((DATEDIFF(@delivery_date, @order_date)/2)))),0) = UNIX_TIMESTAMP(DATE(NOW()))

enter image description here

我希望查询返回当日日期和中间日期相同的行。

1 个答案:

答案 0 :(得分:1)

您可以在没有变量且没有unix_timestamp的情况下完成

SELECT order_date, delivery_date,
   ADDDATE(order_date, ((DATEDIFF(delivery_date, order_date)/2))) AS middle_date, 
   DATE(NOW()) AS todays_date 
FROM `order`
WHERE ADDDATE(order_date, ((DATEDIFF(delivery_date, order_date)/2))) = DATE(NOW())