Как проверить, находится ли дата между date1 и date2, используя mysql? - PullRequest
5 голосов
/ 18 января 2012

Я пытаюсь написать запрос, который проверит сегодняшнюю дату по моим столбцам таблицы date1 и date2 в mysql / php. Это то, что я ищу:

Таблица «событий»:

  • date1 = дата начала (XXXX-XX-XX)
  • дата2 = дата окончания (XXXX-XX-XX)

запрос:

  • выбрать * из событий, где 2012-01-18 между датой 1 и датой 2 (или равны дате 1 и датой 2)

Но я не уверен, как это сделать .. любая помощь будет оценена :)

EDIT:

Может быть, мне было неясно .. если сегодняшняя дата = '2012-01-18' Мне нужно, чтобы она находила результаты, если сегодняшняя дата находится между диапазоном дат date1 и date2 .. Таким образом date1 может быть '2012-01-04 'и date2 может быть' 2012-01-21 '.. поэтому, если сегодняшняя дата попадает между или в эти даты, возвращается результат ..

Ответы [ 6 ]

16 голосов
/ 18 января 2012
SELECT * FROM events 
  WHERE date1<='2012-01-18'
  AND date2>='2012-01-18'
2 голосов
/ 20 августа 2014

Если вы ссылаетесь на сравнение сегодняшней даты между начальной и конечной датой, я думаю, вы должны использовать это:

SELECT *
FROM table
WHERE '2014-08-20' >= start_date
AND '2014-08-20' <= end_date

Надеюсь, это поможет:)

1 голос
/ 18 января 2012

Попробуйте,

SELECT * FROM events  
  WHERE date1<='2012-01-19'  
  AND date2>='2012-01-18'  
1 голос
/ 18 января 2012
SELECT *
FROM events
WHERE date1 <= '2012-01-18'
AND date2 >= '2012-01-18';

Это должно помочь вам начать. Вы можете использовать DATE(NOW()), чтобы получить сегодняшнюю дату, если не хотите жестко закодировать дату.

0 голосов
/ 21 октября 2016

Хотя есть много ответов на этот вопрос, я хотел бы дать свой ответ относительно той же ситуации, с которой я столкнулся.

Я использую php для запроса базы данных mysql.

сначала что ясделать, чтобы преобразовать дату в поддерживаемый MySQL формат даты, который является гггг-мм-дд

$date = new DateTime($date);
$date=date_format($date, 'Y-m-d');

в предложении где запрос я использую МЕЖДУ

"'$date' BETWEEN start_date AND end_date"

это прекрасно работает, учитывая описанный здесь случай.

0 голосов
/ 18 января 2012

Модифицированная версия кода Styfle

$date1 = '2010-01-01'; // example min
$date2 = '2015-01-01'; // example max
$sql = "SELECT * FROM events WHERE $date1 >= '2012-01-18' AND $date2 <= '2012-01-18';";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) != 0) {
    // This date is equal to or within the range specified
} else {
    // The date was not within the range specified
}

тогда вы можете выполнить код на основе результата

...