Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка диапазона дат / 8 сообщений из 8, страница 1 из 1
24.08.2013, 18:11:46
    #38376614
Tmin10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
В таблице есть поле дня рождения в типа data.
Подскажите, как выбрать все даты, у которых месяц и число лежат между сегодняшним днём и воскресеньем этой недели включительно. Если вычислить число для воскресенья нельзя, то тогда просто все даты, между текущим днём и другим, не смотря на год.
...
Рейтинг: 0 / 0
24.08.2013, 19:11:20
    #38376628
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
Tmin10и воскресеньем этой недели
Tmin10не смотря на годКонкретизируйте понятие "воскресенье этой недели". Ы разные года это будут разные числа...
...
Рейтинг: 0 / 0
24.08.2013, 20:00:32
    #38376642
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
демо-идея (с экспериментальным коэффициентом 5)
Код: sql
1.
2.
3.
4.
5.
6.
select c.dt
from calendar c
where date_format(c.dt,'%m%d') between -- выкинуть год = поиск только перебором всех строк
  date_format(curdate(),'%m%d') and 
  date_format(adddate(curdate(),6-(5+to_days(curdate()))%7),'%m%d')
;
...
Рейтинг: 0 / 0
24.08.2013, 20:45:22
    #38376660
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
Cygapb-007
Код: sql
1.
поиск только перебором всех

а тут как ни крути будет фулскан, т.к. поиск по окончанию индекса, а не по началу...
...
Рейтинг: 0 / 0
24.08.2013, 21:32:17
    #38376682
Tmin10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
Cygapb-007, спасибо огромное, всё прекрасно работает, проверил также на стыке месяцов, на стыке годов пока не проверял
...
Рейтинг: 0 / 0
24.08.2013, 21:43:22
    #38376687
Tmin10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
Знаете, а между годами не работает, что конечно логично: получается диапазон от 30 декабря до 5 января...
...
Рейтинг: 0 / 0
24.08.2013, 22:39:38
    #38376713
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
как-то так...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select c.dt
from calendar c,
  (select 
    @d:=adddate('2010-12-31',0)d,
    @k:=(5+to_days(adddate(@d,0)))%7 k,
    @d1:=if(@k<1,date_format(adddate(@d,0-@k),'%m%d'),null)d1,
    @d2:=if(@k<2,date_format(adddate(@d,1-@k),'%m%d'),null)d2,
    @d3:=if(@k<3,date_format(adddate(@d,2-@k),'%m%d'),null)d3,
    @d4:=if(@k<4,date_format(adddate(@d,3-@k),'%m%d'),null)d4,
    @d5:=if(@k<5,date_format(adddate(@d,4-@k),'%m%d'),null)d5,
    @d6:=if(@k<6,date_format(adddate(@d,5-@k),'%m%d'),null)d6,
    @d7:=if(@k<7,date_format(adddate(@d,6-@k),'%m%d'),null)d7
  )`week`
where date_format(c.dt,'%m%d') in(@d1,@d2,@d3,@d4,@d5,@d6,@d7)
;
...
Рейтинг: 0 / 0
25.08.2013, 14:29:23
    #38376897
Tmin10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка диапазона дат
Cygapb-007, спасибо, идеально работает!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка диапазона дат / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]