Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбрать людей определенного возраста 
:(
    Опции темы
lumentek
Дата 27.2.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



Всем привет. в таблице БД MySQL имеется поле data - возвраст пользователя.
Мне нужно выбрать всех пользователей, которым меньше или равно 14 лет. тип данных поля DATE
Подскажите как более точно определить возраст относительно настоящего времени?
PM MAIL   Вверх
skyboy
Дата 27.2.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



PM MAIL   Вверх
lumentek
Дата 27.2.2010, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



skyboy, не могли бы Вы показать на примере,  что-то не пойму как воспользоваться(
PM MAIL   Вверх
bars80080
Дата 27.2.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



подтверждаю. в этой функции без поллитры не разберёшь

Цитата(lumentek @  27.2.2010,  19:26 Найти цитируемый пост)
имеется поле data - возвраст пользователя.

я так понимаю, что data всё же не возраст, а день рождения. тогда скорее всего так:

Код

SELECT * FROM `table` WHERE `data` <= DATE_SUB(NOW(), INTERVAL 14 YEAR)


PM MAIL WWW   Вверх
lumentek
Дата 28.2.2010, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



>>я так понимаю, что data всё же не возраст, а день рождения
верно!

Вроде получилось.! Только Есть момент. Разве нужно логику <=, а не >= ?
И еще функция DATE_SUB еще и время возвращает, поэтому пришлось добавить DATE_FORMAT - 

Код

SELECT * , DATE_SUB( DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) , INTERVAL 0 YEAR ) 
FROM `spid_patients` 
WHERE date_birth >= DATE_SUB( DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) , INTERVAL 14 YEAR ) 

такой запрос возвращает записи где дата   например 2008-11-12 

Правильный ли запрос по логике?
PM MAIL   Вверх
bars80080
Дата 28.2.2010, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(lumentek @  27.2.2010,  19:26 Найти цитируемый пост)
Мне нужно выбрать всех пользователей, которым меньше или равно 14 лет

ну, логика простая. чтоб день рождения был не далее 14 лет назад. 2008-11-12 вполне подходит


только у тебя почему-то в
Цитата(lumentek @  27.2.2010,  23:38 Найти цитируемый пост)
SELECT * , DATE_SUB( DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) , INTERVAL 0 YEAR ) 
FROM `spid_patients` 
WHERE date_birth >= DATE_SUB( DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) , INTERVAL 14 YEAR ) 

разные числа после слова INTERVAL
PM MAIL WWW   Вверх
lumentek
Дата 28.2.2010, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



Цитата
 только у тебя почему-то в 
SELECT * , DATE_SUB( DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) , INTERVAL 0 YEAR ) 
FROM `spid_patients` 
WHERE date_birth >= DATE_SUB( DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) , INTERVAL 14 YEAR ) 

разные числа после слова INTERVAL

Не совсем понял? В смысле  то  что в селекте стоит значение 0, а в условии 14? Если да, то это я в целях отладки сделал,  чтобы проверять запрос было прощедля меня smile



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.