Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Выборка данных (Alexandr) 01/11/2005 - 12:52:00
      Re: Выборка данных (WebTech) 01/11/2005 - 17:18:22
      Re: Выборка данных (Alexandr) 01/11/2005 - 17:54:33
      Re: Выборка данных (WebTech) 01/11/2005 - 19:13:48
      Re: Выборка данных (Dinky) 01/11/2005 - 19:38:26
      Re: Выборка данных (bac) 01/11/2005 - 19:40:58
      Re: Выборка данных (bac) 01/11/2005 - 19:44:24
      Re: Выборка данных (Alexandr) 01/11/2005 - 19:52:52
      Re: в лоб :) (Dinky) 01/11/2005 - 19:59:01
      Re: в лоб :) (Alexandr) 01/11/2005 - 20:12:29
      Re: тоже вроде в лоб (WebTech) 01/11/2005 - 20:17:02
      Re: Мне кажется так (bac) 01/11/2005 - 21:49:42
      Re: в лоб :) (Dinky) 01/11/2005 - 23:23:45
      Re: to bac : работает но частично (Alexandr) 02/11/2005 - 16:56:54
      Re: to WebTech (Alexandr) 02/11/2005 - 17:30:38

> Original message text:
> From: Alexandr - 01/11/2005 - 12:52:00
> Subject:Выборка данных
> -----------------
> Есть таблица пользователей с полями
> фамилия, имя. ... , дата рождения(тип date)
>
> Нужно вывести пользователей которых день рожденья был сегодня, вчера, позавчера ..(ДР за 4 прошедших дня включая сегоднешний)
>
> Кто-нибуть подскажите с запросом!!!
>


From: bac - 01/11/2005 - 21:49:42
Subject:Мне кажется так
-----------------
Сначала коментарии
1. Расчет построен на разнице в днях от начала года
2. Ньюансы начинаются при високосных годах.
- Если текущий год високосный и человек родился тоже в високосный год (или оба года не високосные) то разница должна быть от 0 до 3 включительно
- Если текущий год високосный, а год рожденья не високосный то разница в днях должна быть от 1 до 4 кроме случая когда это январь или февраль (разница от 0 до 3)
- Если текущий год невисокосный, а год рожденья високосный то разница в днях должна быть от -1 до 2 кроме случая когда это январь или февраль (разница от 0 до 3)

Ниже выражение считает число дней в феврале
day(adddate(concat(year(dBirthday),'-03-01'),-1))

select @CurYearFebDays:=day(adddate(concat(year(current_date),'-03-01'),-1));

select * from base where (day(adddate(concat(year(dBirthday),'-03-01'),-1)) = @CurYearFebDays and
dayofYear(current_date) - dayofyear(dBirthday) between 0 and 3 ) or (
day(adddate(concat(year(dBirthday),'-03-01'),-1)) > @CurYearFebDays and
if(month(current_date)>2,
dayofYear(current_date) - dayofyear(dBirthday) between 1 and 3,
dayofYear(current_date) - dayofyear(dBirthday) between 0 and 3 )) or (
day(adddate(concat(year(dBirthday),'-03-01'),-1)) < @CurYearFebDays and
if(month(dBirthday)>2,
dayofYear(current_date) - dayofyear(dBirthday) between -1 and 2,
dayofYear(current_date) - dayofyear(dBirthday) between 0 and 3 ) )


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
24798



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |