Выборка по возрасту

Программирование, которое не связано с API.
Ответить
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Выборка по возрасту

Сообщение gaponj88 »

С самого начала затупил ,в базу записывал дату рождения как (""."".1985 )--пример!Надо было сразу расчитывать и записывать уже готовый например --23 --года.
А теперь сталкнулся с такой проблемой,что мне надо людей отфильтровать по возрасту!
А вот теперь то и не пойму как это сделать.Может кто натолкнет на путь истинный? :cry:
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Выборка по возрасту

Сообщение bodnar »

gaponj88 писал(а):Надо было сразу расчитывать и записывать уже готовый например --23 --года.
боже упаси, или люди перестали стареть?
gaponj88 писал(а):(""."".1985 )--пример
это что, строкой тип данных или date?
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Выборка по возрасту

Сообщение gaponj88 »

Это строкой Тип данных,записывается из bdate
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Выборка по возрасту

Сообщение bodnar »

а какая необходимость была использовать не специализированный тип date? с ним можно делать различные операции сравнения, и выборки диапазонов
в строковом случае не представляю решения
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Выборка по возрасту

Сообщение gaponj88 »

С самого начала затупил ,в базу записывал дату рождения как (""."".1985 )
:)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Выборка по возрасту

Сообщение Александр »

Можно конечно вырезать из строки год

Код: Выделить всё

SELECT *, SUBSTRING(bdate FROM 7 FOR 4) AS year FROM `users` ORDER BY year
Но лучше переделай поля в тип даты.
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Выборка по возрасту

Сообщение gaponj88 »

Спасибо Александр,в голове только и было что использовать substr()
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Выборка по возрасту

Сообщение gaponj88 »

А как по новому теперь записывать в базу?
При регистрации в базе пользователя,у него постом из флешки идет bdate(28.11.1988),а формат DATE 0000-00-00
Как преобразовывать?Подскажите?
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Выборка по возрасту

Сообщение gaponj88 »

Все разобрался,из-за того что раз тупанул,потратил весь день на расхлебку!
Проблему решил таким образом:
Создал еще один столбец назвал "bdate_2" и применил ВОТ ТАКОЙ КЛАССНЫЙ СКРИПТ:

Код: Выделить всё

UPDATE `stat`SET `bdate_2` = CONCAT(SUBSTRING_INDEX( `bdate` , '.', -1 ) ,  '-',SUBSTRING_INDEX( SUBSTRING_INDEX( `date_str` , '.', 2 ) , '.' , -1 ) ,  '-',SUBSTRING_INDEX( `bdate` , '.', 1 ) ) ;
он мне из первого столбца bdate формата строка 28.11.1988 переделал в столбец bdate_2 формата DATE 1988-11-28
Я рад и счастлив!
Одним словом классный скрипт! :)
Ответить