[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Организация периодов в БД
olejan1991
Есть перечень сезонов(периодов)

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

с 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
stump
Цитата (olejan1991 @ 4.06.2015 - 20:22)
929664000

А это че?

_____________
Трус не играет в хокей
olejan1991
Цитата (stump @ 4.06.2015 - 18:16)
А это че?


дата в юникс
sergeiss
Попробуй вот это
Цитата (olejan1991 @ 4.06.2015 - 20:22)
WHERE 929664000 BETWEEN `date_from` AND `date_to` OR 946425600 BETWEEN `date_from` AND `date_to`

Замени на
WHERE `date_from` >= date_of_beginning_first_period AND `date_to`<= date_of_end_last_period


И зачем даты в таком нечитаемом формате делать? Работай с датами в более удобном виде, а затем уже при выводе, в ПХП, сможешь отформатировать так, как удобно будет.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
olejan1991
Вот ответ на вопрос

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/thread14683...tml#post7719434
sergeiss
Я знаю, что в мире есть извращенцы... Но чтобы НАСТОЛЬКО??? Первый раз вижу smile.gif

olejan1991, если у тебя даты в БД прописаны не в текстовом виде, а в виде именно дат, то вот это извращение STR_TO_DATE("30.12.2015","%d.%m.%Y") легко и непринужденно заменяется на '2015-12-30'. И так во всём запросе. И тогда запрос будет делаться быстрее и выглядеть намного "читабельнее".


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.