Задавайте вопросы, мы ответим
Вы не зашли.
Дана база данных пользователей
CREATE TABLE `users` (
`user_id` int(11) NOT NULL default '0',
`birthday` date NOT NULL default '0000-00-00',
`nickname` char(32) NOT NULL default '',
`password` char(32) NOT NULL default '',
PRIMARY KEY (`user_id`)
)
нужно сделать SQL запрос на получение информации о ближайших днях рождения
вот собвенно мой запрос
SELECT *
FROM `users`
WHERE IF( 366 - DAYOFYEAR( NOW( ) ) >365, (
DAYOFYEAR( Birthday ) - DAYOFYEAR( NOW( ) ) <365 )
AND (
DAYOFYEAR( Birthday ) - DAYOFYEAR( NOW( ) ) >=0
), (
(
DAYOFYEAR( Birthday ) - DAYOFYEAR( NOW( ) ) <365
)
AND (
DAYOFYEAR( Birthday ) - DAYOFYEAR( NOW( ) ) >=0
)
)
OR (
( 366 - DAYOFYEAR( Birthday ) - DAYOFYEAR( NOW( ) ) <365 )
AND ( 366 - DAYOFYEAR( Birthday ) - DAYOFYEAR( NOW( ) ) >=0 )
)
)
LIMIT 0 , 30
как мне теперь вывести дополнительное поле, которое будет содержать количество исполняемых лет пользователю?
нужно сделать все в одном запросе, выводить вместе с найденными БЛИЖАЙшими имениниками
LIMIT 0, 5 - вывожу 5 результатов?
Отредактированно are17 (21.10.2011 16:52:46)
Неактивен
Я не совсем понял подсчёты которые вы тут делали. Но в принципе можно сделать так.
Отредактированно evgeny (21.10.2011 20:06:18)
Неактивен
evgeny написал:
Я не совсем понял подсчёты которые вы тут делали. Но в принципе можно сделать так.
select users.*,
if((month(now())>=month(birthday)) and (day(now())>=day(birthday)),year(now())-year(birthday),year(now())-year(birthday)-1) as 'age'
from users
where (month(birthday)=month(now())) or (month(birthday)=month(now()+interval 1 month))
Это условие по которому получаем именинников ближайших двух месяцев.where (month(birthday)=month(now())) or (month(birthday)=month(now()+interval 1 month))
Это подсчёт возрастаif((month(now())>=month(birthday)) and (day(now())>=day(birthday)),year(now())-year(birthday),year(now())-year(birthday)-1) as 'age'
спасибо за предложенное но ничего не получилось....
поеснию еще раз
запрос с поиском ближайших имениников я сделал.... вопрос как реализовать добавление еще одной колонке, и посчитать к в выведеным найденым ближайшим именниникам, сколько лет им исполниться....
+ еще загвозка в переходе года.... некоторым может исполниться +1
Неактивен
вопрос как реализовать добавление еще одной колонке, и посчитать к в выведеным найденым ближайшим именниникам, сколько лет им исполниться....
Ну так чем не подходит мой вариант ?
Это текущий возраст
Отредактированно evgeny (22.10.2011 14:21:16)
Неактивен
evgeny написал:
вопрос как реализовать добавление еще одной колонке, и посчитать к в выведеным найденым ближайшим именниникам, сколько лет им исполниться....
Ну так чем не подходит мой вариант ?
Это текущий возрастif((month(now())>=month(birthday)) and (day(now())>=day(birthday)),year(now())-year(birthday),year(now())-year(birthday)-1) as 'age'
Это сколько исполнится.(year(now())-year(birthday)) as 'age'
пытаюсь вставить твои варианты пишет что синтаксическая ошибка
напиши плиз как для дауна) добавь к моему коду свое решение, что бы получился SQL запрос
(перепробывал кучу вариантов, нефига не вышло.... добавлял WHERE, SELECT... проверял на синтаксис в ++ ступор)
Неактивен
Неактивен