Я хотел бы объявить переменную, чтобы исключить двойную запись при вводе даты в предложение WHERE. Однако база данных доступна только для чтения и не позволяет мне ничего объявлять. Вот что я пробовал:
SET @begin_date = '2017-12-01'
SET @end_date = '2017-12-30'
WHERE (ship.dateShipped BETWEEN @begin_date AND @end_date)
OR (fulfill.datefulfilled BETWEEN @begin_date AND @end_date)
Запрос упрощен ради этой публикации, но в основном я пытаюсь это сделать. Я должен передать это продавцу, чтобы он работал по мере необходимости, и хотел бы как можно проще изменить параметры даты.
Есть ли способ объявить переменные в этом сценарии? Или, может быть, альтернативный способ написать предложение "WHERE", поэтому даты нужно вводить только один раз?
Я также пробовал:
SELECT @begin_date := '2017-12-01', @end_date := '2017-12-30'......
а также
DECLARE begin_date INT unsigned DEFAULT '2017-12-01'
DECLARE end_date INT unsigned DEFAULT '2017-12-30'
но безрезультатно.
Ваш запрос упрощается почти до тарабарщины, но что-то вроде этого должно работать.
SELECT ...
FROM ....
INNER JOIN (SELECT '2017-12-01' AS beginDate, '2017-12-30' AS endDate) AS dr
ON (ship.dateShipped BETWEEN dr.beginDate AND dr.endDate)
OR (fulfill.datefulfilled BETWEEN dr.beginDate AND dr.endDate)
...
Это действительно не позволит вам использовать переменные @?