SQL Проверка месяца между двумя датами - PullRequest
0 голосов
/ 29 октября 2018
SELECT * FROM bookingpoleorder WHERE ((
   YEAR(sDate) = $year AND MONTH(sDate) = $month
) OR (
   YEAR(eDate) = $year AND MONTH(eDate) = $month
))

У меня есть таблица бронирования с двумя датами, например, даты начала и окончания. поэтому мне нужно получить отчет обо всех бронированиях за месяц. Ниже приведен запрос, который я использовал. но я не получаю между датами, если дата 2018-09-12 до 2018-12-12 бронирование будет показано только через 9 месяцев и 12-й месяц не попадает между месяцами

Ответы [ 4 ]

0 голосов
/ 30 октября 2018

Если sdate - начальная дата, а edate - конечная дата, и вы укажите $year как год, а $month как месяц, попробуйте:

SELECT * FROM bookingpoleorder WHERE DATE_FORMAT(sdate,'%Y') = $year AND DATE_FORMAT(edate,'%Y') = $year AND DATE_FORMAT(sdate,'%m') = $month AND DATE_FORMAT(edate,'%m') = $month
0 голосов
/ 29 октября 2018
SELECT * 
FROM bookingpoleorder
WHERE CAST($month AS DATE) BETWEEN  CAST(sDate AS DATE) AND CAST(eDate AS DATE)
0 голосов
/ 29 октября 2018

Это полностью зависит от того, какая база данных у вас есть. Если вы используете mysql, попробуйте

SELECT * FROM bookingpoleorder WHERE DATE_FORMAT(date,'%Y')=$year AND DATE_FORMAT(date,'%m') BETWEEN $month1 AND $month2
0 голосов
/ 29 октября 2018

МЕЖДУ оператором выбирает значения в заданном диапазоне. Значения могут быть числами, текстом или датами.

SELECT * FROM bookingpoleorder 
WHERE sDate BETWEEN '2018-09-12' AND '2018-12-12' 
OR eDate BETWEEN '2018-09-12' AND '2018-12-12' 

Или используя Between

SELECT * 
FROM bookingpoleorder
WHERE date_to_compare BETWEEN  sDate AND eDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...