Я пытаюсь проверить с помощью sql, если диапазон дат (с датой начала и окончания) находится в месяце (относительно года). Месяц и год задаются переменными (GET-переменные).Проверьте, существует ли диапазон дат в месяце (календарь)
Это мой стол:
+----+------+-------+-----+
| id | name | start | end |
+----+------+-------+-----+
Поскольку назначение может быть только одна дата (начало и конец будет тот же день), я должен рассмотреть этот вопрос.
Мой запрос
SELECT
id,
name,
start,
end
FROM appointments
WHERE (MONTH(start) = ? AND YEAR(end) = ?) OR (MONTH(start) = ? AND YEAR(end) = ?)
ORDER BY start
Проблема с этим запросом является то, что он просто проверяет запуск месяц и конечный месяц не месяцы между ними. Например, если встреча длится более 5 месяцев, этот запрос завершается с ошибкой.
Как я могу преобразовать даты в YYYYMM? Может быть, в запросе типа DATE_FORMAT (start, 'YYYYMM') AS start2'? Но это не работает. – Bernd
@ Бернд. , , Это то, что делает арифметика. , , умножьте год 100 и добавьте месяц. Вы также можете использовать 'date_format()', потому что это будет работать как для строк, так и для чисел. –