Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2008, 15:53   #1
SatiriK(rus)
 
Аватар для SatiriK(rus)
 
Регистрация: 11.11.2008
Сообщений: 3
Вопрос Промежутки времени

Закрался один вопрос: Как оперировать промежутками времени в MySQL ?

Надо сравнить промежуток времени между date и date_2 с временами года...
ну что-то типа MONTH(date) BETWEEN 9 and 11 только вместо MONTH(date) нужен промежуток [date ; date_2]

Код:
SELECT... тра ля-ля ... WHERE (MONTH( date ) BETWEEN 9 and 11) OR (MONTH( date_2 ) between 9 and 11)
Пока пользуюсь этим... но для зимы, где месяцы = 12, 1, 2 - это не подходит. Та и если промежуток времени охватывает, к примеру, полгода (3 сезона, скажем), то опять же борода получается
SatiriK(rus) вне форума Ответить с цитированием
Старый 12.11.2008, 22:48   #2
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

А зачем из даты выделять месяц? Не понимаю. Не лучше ли оперировать полной датой?
Предлагаю использовать динамический запрос:

Код:
SELECT
  ...
FROM
  ...
WHERE (aDATE1 BETWEEN :DATE_1 AND:DATE_2)
      OR (aDATE2 BETWEEN :DATE_1 AND:DATE_2);
где DATE_1 и DATE_2 - даты требуемого периода времени.
MalexG вне форума Ответить с цитированием
Старый 13.11.2008, 21:47   #3
SatiriK(rus)
 
Аватар для SatiriK(rus)
 
Регистрация: 11.11.2008
Сообщений: 3
По умолчанию

Так фишка вся в том, что событие - периодическое. То бишь дата-то у него может быть, скажем с 1999-11-06 по 2000-02-06 но оно произошло зимой/осенью. Следовательно мне надо делать выборку по месяцам... хотя я уже подумываю о запросе, который вычитал бы разницу лет с заданного события до нынешней даты и прибавлял бы разность лет... но это опять же не решает вопрос с большими промежутками времени. К примеру, если у меня дата с 2000-01-01 по 2000-12-31, то событие попадает только в зиму, хотя охватывает весь год.

Дано зациклилинное множество месяцев:
...->1->2->3->4->5->6->7->8->9->10->11->12->1->2->3...

и 2 даты, которые выбирают из этого множества нужные месяца, (с 1999-11-06 по 2000-02-06) {11;12;1;2}
И если хотя бы один из выбранных значений включается в множество зимних месяцев {12;1;2} , то срабатывает select =)

С виду просто, но уже неделю голову ломаю.
SatiriK(rus) вне форума Ответить с цитированием
Старый 16.11.2008, 15:16   #4
mexboyy
Новичок
Джуниор
 
Регистрация: 16.11.2008
Сообщений: 1
По умолчанию

Вот спасибо большое.
mexboyy вне форума Ответить с цитированием
Старый 19.11.2008, 00:37   #5
SatiriK(rus)
 
Аватар для SatiriK(rus)
 
Регистрация: 11.11.2008
Сообщений: 3
По умолчанию

... ну что, без вариантов?
SatiriK(rus) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
диапазон времени chekanoff БД в Delphi 34 02.03.2008 01:28
Отсчет времени в С Raptor Помощь студентам 13 29.12.2007 16:32
Машина времени BETONOMESHALKA Общие вопросы Delphi 4 23.12.2007 23:44