我正在将两个日期之间的中点放入变量中,并且我想检查中点是否是今天。我可以毫无问题地选择我需要的内容,但是一旦我将变量放入 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`
现在,当我这样做时,我没有得到任何结果:
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()))
我希望查询返回 Todays_date 和 middle_date 相同的行。
最佳答案
您可以在没有变量和 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())
关于mysql - 如何在 where 子句中使用 select 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55923686/