Как использовать переменные из select внутри оператора where - PullRequest
0 голосов
/ 30 апреля 2019

Я получаю промежуточную точку между двумя датами в переменную, и я хочу проверить, является ли средняя точка сегодня.Я могу выбрать то, что мне нужно, без проблем, но как только я помещаю переменные в предложение 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 совпадают.

1 Ответ

1 голос
/ 30 апреля 2019

Вы можете сделать это без переменных и без 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...