Как выбрать день и месяц между двумя датами:
Например: 31 декабря - это период с 26 декабря 2016 года по 2 января 2017 года.
Мой запрос:
select table2.*
from table1,
table2
where table2.day between DAYOFMONTH(table1.date_start) and DAYOFMONTH(table1.date_end)
and table2.month between MONTH(table1.date_start) and MONTH(table1.date_end)
Table1 (резервирование):
-id -date_start (дата) -date_end (дата)
1 | 2016-12-26 | 2017-01-02
Table2: (рецепт)
id | имя | день (int) | месяц (целое)
1 | ххх | 31 | 12
1 ответ
Похоже, вы используете MySQL. Вместо того, чтобы пытаться проверять месяцы и дни по отдельности, вместо этого просто используйте BETWEEN
с двумя точками, диапазон которых вы хотите захватить.
SELECT t1.*
FROM table1 t1
INNER JOIN table2 t2
ON t1.some_col = t2.some_col
WHERE day_col BETWEEN '2016-12-26' AND '2017-01-02'
Обратите внимание, что я также добавил к вашему запросу условие соединения, без которого вы бы выполняли перекрестное соединение, скорее всего, не то, что вы намереваетесь.
datetime
, и тогда мой ответ должен работать "из коробки".
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.