За последние 24 часа нас посетили 17090 программистов и 1693 робота. Сейчас ищут 805 программистов ...

Организация периодов в БД

Тема в разделе "MySQL", создана пользователем olejan1991, 4 июн 2015.

  1. olejan1991

    olejan1991 Активный пользователь

    С нами с:
    27 фев 2012
    Сообщения:
    25
    Симпатии:
    0
    Есть перечень сезонов(периодов)

    например так:

    с 1 января по 20 февраля
    с 21 февраля по 28 мая
    с 29 мая по 10 августа
    с 11 августа по 3 ноября
    с 4 ноября по 1 декабря
    с 2 декабря по 31 декабря

    Информация в них будет повторяться каждый год, следовательно, год не нужен, есть просто такие временные промежутки,которые разделяют год на сезоны (периоды)

    Когда клиент заходит на сайт и вбивает дату в поисковую форму например такую:

    1) с 5 января по 23 февраля, он должен получить информацию о сезонах "с 1 января по 20 февраля" и с "21 февраля по 28 мая"

    2) с 30 мая по 5 августа, он должен получить информацию о сезоне "с 29 мая по 10 августа"

    Также возможен такой вариант
    3) с 20 декабря по 5 января и тогда клиент получает информацию о сезонах "с 2 декабря по 31 декабря" и "с 1 января по 20 февраля"

    вот делаю такую таблицу:
    http://prntscr.com/7d2ka5

    делаю такой запрос

    SELECT id,date_from,date_to,hotel_id,from_unixtime(date_from, '%D %M %Y'),from_unixtime(date_to, '%D %M %Y') FROM `qocEaW_seasons` WHERE 929664000 BETWEEN `date_from` AND `date_to` OR 946425600 BETWEEN `date_from` AND `date_to`

    и выводит мне вот это

    http://prntscr.com/7d2kvr

    только первый и последний периоды,которые попадают в запрос,а как вывести все периоды,которые попадают в запрошенный период

    http://prntscr.com/7d2li0
     
  2. olejan1991

    olejan1991 Активный пользователь

    С нами с:
    27 фев 2012
    Сообщения:
    25
    Симпатии:
    0
    Вот ответ на вопрос

    Код (PHP):
    1. SELECT*FROM`таблица`WHERE(STR_TO_DATE("20.06.2015","%d.%m.%Y")BETWEEN`date_from`AND`date_to`OR STR_TO_DATE("30.12.2015","%d.%m.%Y")BETWEEN`date_from`AND`date_to`)OR(`date_from`>STR_TO_DATE("20.06.2015","%d.%m.%Y")AND`date_to`<STR_TO_DATE("30.12.2015","%d.%m.%Y")) 
    Дали его тут http://www.cyberforum.ru/mysql/thread1468364.html#post7719434
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Вот хороший человек, не поленился поделиться! И тема полезная.