mysql - 如何在 where 子句中使用 select 中的变量

标签 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

我希望查询返回 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/

相关文章:

php - 在 MySQL 端或 PHP 端对 SQL 数据进行分组?

PHP MYSQL 从超过 2 个表中检索数据

mysql - 如何在 UPDATE 查询中执行三个表 JOIN?

mysql - SQL按字符串顺序排序

php - SQL Union 只计算一个查询

Mysql ORDER BY 和 LIMIT 慢查询

php - 在数据库中组织类数据的最佳方式是什么?

php - 存在关系的空 mysql 数据库

带有 WHERE 子句的 MySQL SELECT 不包括数量为 '0' 的结果

mysql - 2 一个 SQL 查询中同一列的日期