Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ближайшие дни рождения (за текущий месяц). / 13 сообщений из 13, страница 1 из 1
12.12.2004, 22:56:18
    #32825005
upper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Люди подскажите как достать из базы ближайшие дни рождения, сам не соображу а найти пример или хотя бы наводку не могу. Нужно, чтото типа в этом месяце дни рождения у следующих людей...

Буду рад подсказке или ссылочке :)
...
Рейтинг: 0 / 0
17.12.2004, 15:30:22
    #32832636
upper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
И почему то не работает такой запрос:
select * from main where birthday between CURDATE() and DATE_ADD(CURDATE(),INTERVAL 1 MONTH)

INTERVAL менял от 1 до 12 уж хоть, что-то должно было попасть в такой интервал но результат - пустой :(
...
Рейтинг: 0 / 0
17.12.2004, 16:00:11
    #32832714
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Ну в орасле я бы написал

SELECT *
FROM tabl1
WHERE birthday BETWEEN sysdate AND LAST_DAY(sysdate)
...
Рейтинг: 0 / 0
17.12.2004, 16:32:17
    #32832778
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Люди, что вы бредите?
В поле birthday наверняка хранится дата рождения! Так вот она не может быть позже, чем "сегодня"!!! Не учитывайте вы год, тогда все сразу заработает!
...
Рейтинг: 0 / 0
17.12.2004, 23:54:48
    #32833199
upper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
2 RFT
а как это сделать?
...
Рейтинг: 0 / 0
18.12.2004, 15:19:51
    #32833414
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Сравнивай не всю дату, а только месяц MONTH(date) и день DAYOFMONTH(date).
...
Рейтинг: 0 / 0
20.12.2004, 23:32:14
    #32835978
upper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Вот, что у меня получилось
SELECT name,birthday FROM main WHERE MONTH(birthday)=MONTH(CURRENT_DATE)
это будет правильно работать?
Я переводил часы вроде работает... но мало ли..
...
Рейтинг: 0 / 0
21.12.2004, 10:55:44
    #32836331
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Работать будет, но не совсем верно: во-первых, у тебя так будут браться уже прошедшие д/р из текущего месяца, а во-вторых если напр. у чела ДР 1-го апреля, а сегодня 31-е марта, то ты узнаешь о его ДР в лючшем случае завтра. Так что пиши:
SELECT name,birthday FROM main WHERE MONTH(birthday) = MONTH(CURRENT_DATE) AND DAYOFMONTH(birthday) > DAYOFMONTH(CURRENT_DATE) OR MONTH(birthday) = MONTH(CURRENT_DATE)+1 AND DAYOFMONTH(birthday) < DAYOFMONTH(CURRENT_DATE)
Так у тебя будут выводиться дни рождения именно на предстоящий месяц.
Только напиши еще обработку текущего декабря, а то без нее у тебя будет лажа, т.е. если сейчас декабрь, то так как я тебе написал январские ДР у тебя не появятся, т.к. MONTH(CURRENT_DATE)+1 будет 13. Лучше воткни сюда какую-нть переменную, которую предварительно вычисли в IF.
P.S. А зачем ты часы переводил, я не понял?
...
Рейтинг: 0 / 0
21.12.2004, 12:34:31
    #32836662
upper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Часы(даты, пробовал разные месяца) переводил, чтобы посмотреть работает или нет. Ставил май 2005 и получал данные за май.... и т.п.


Спасибо. Попробую усложнить запрос.
...
Рейтинг: 0 / 0
21.12.2004, 13:19:49
    #32836799
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Посмотрел доку, и узнал что IF можно не ставить отдельно (он типа Decode в оракле). Значит, так. Поехали:
SELECT name,birthday FROM main WHERE MONTH(birthday) = MONTH(CURRENT_DATE) AND DAYOFMONTH(birthday) > DAYOFMONTH(CURRENT_DATE) OR MONTH(birthday) = IF(MONTH(CURRENT_DATE)+1 = 13,1,MONTH(CURRENT_DATE)+1) AND DAYOFMONTH(birthday) < DAYOFMONTH(CURRENT_DATE)
...
Рейтинг: 0 / 0
21.12.2004, 22:31:29
    #32837931
upper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
2 RFT
Большое человеческое спасибо :)
Ты спас меня от депрессии :)


Как отсортировать результат если получеем:

18.01.1970
23.12.1968
24.12.1970

то простое ORDER BY DAYOFMONTH(birthday) уже не канает?
...
Рейтинг: 0 / 0
22.12.2004, 14:41:31
    #32839342
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
Зато ORDER BY birthday заканает
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.12.2013, 22:23:47
    #38514785
Vergi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ближайшие дни рождения (за текущий месяц).
А как сделать, что б выводило не на 1 месяц, а на 2 или 3 или 11
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ближайшие дни рождения (за текущий месяц). / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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