Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 18:08   #1
Kuzia1528
Пользователь
 
Регистрация: 02.07.2010
Сообщений: 12
По умолчанию Подсчет возраста

Здравствуйте. Есть поле "Дата рождения" и есть поле возраст. Как сделать подсчет возраста в полных годах, при учете, что дата рождения имеет вид:
Код:
09.12.2010
Kuzia1528 вне форума Ответить с цитированием
Старый 09.12.2010, 19:05   #2
Kuzia1528
Пользователь
 
Регистрация: 02.07.2010
Сообщений: 12
По умолчанию

Нашел сию скулу

Код:
select ageTT.* from
(SELECT *, 
IIf(DateSerial(Year(Now()), Month([DD]), Day([DD])) - Date() > 0,
Year(Now())-Year([DD])-1, Year(Now())-Year([DD]) ) as FullAge FROM table3) ageTT
where AgeTT.FullAge between 17 and 25;
-- DD замените на имя поля, где забита дата рождения
-- Table3 замените на имя Вашей таблицы
Какая именно часть нужна?
Kuzia1528 вне форума Ответить с цитированием
Старый 09.12.2010, 19:27   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
SELECT  
IIf(DateSerial(Year(Now()), Month([DD]), Day([DD])) - Date() > 0,
Year(Now())-Year([DD])-1, Year(Now())-Year([DD]) ) as FullAge FROM table3
Вместо [DD] - напишите [Дата рождения]

разумеется, это поле [Дата рождения] должно быть в формате Дата (ДатаВремя)!


Добавлено.
кстати, это Вы, похоже, вот тут мой ответ нашли...

Последний раз редактировалось Serge_Bliznykov; 09.12.2010 в 19:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.12.2010, 17:32   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Kuzia1528.
в дополнение к варианту от Serge_Bliznykov, предлагаю рассмотреть подобную конструкцию:
Код:
SELECT [Дата рождения], DateDiff('yyyy',[Дата рождения],Date()) AS Y FROM...
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 11.12.2010, 12:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Здравствуйте, Евгений.

Цитата:
Сообщение от Teslenko_EA
в дополнение к варианту от Serge_Bliznykov, предлагаю рассмотреть подобную конструкцию:
Код:
SELECT [Дата рождения], DateDiff('yyyy',[Дата рождения],Date()) AS Y FROM...
К огромному моему сожалению, я хотел бы предостеречь читателей форума от повсеместного использования DateDiff...
К сожалению, у Микрософт есть собственная логика, которая не всегда совпадает со здравым смыслом...

Поясню..
Пример с DateSerial и iif() не мой - я его взял на форуме sql.ru, там же было бурное обсуждение, с применением различных способов и методов.
И вот именно там приводились примеры "странного" поведения DateDiff ..

например, возьмём две даты:
d1=10.12.2010 и
d2=01.01.2011
тогда DateDiff('yyyy',[d1],[d2]) вернёт нам 1 год...
мне кажется, что это не очень ожидаемый результат...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2010, 16:18   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Сергей.
да действительно :
Цитата:
d1=10.12.2010 и
d2=01.01.2011
тогда DateDiff('yyyy',[d1],[d2]) вернёт нам 1 год...
но это совсем не значит, что эта функция не имеет право на существование, впрочем как и простое деление разности дат:
Код:
SELECT (Date() - [DD]) /365,25 as Y ...
как на каждый товар есть свой покупатель, так и для каждой функции найдется применение.
суждение упрощенное но жизненное.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 13.04.2012, 18:18   #7
Ejik1974
Новичок
Джуниор
 
Регистрация: 13.04.2012
Сообщений: 2
По умолчанию Считаем возраст

Возраст: IIf((Month(Now())>Month([Общий]![Дата рождения]) Or (Month(Now())=Month([Общий]![Дата рождения])) And (Day(Now())>Day([Общий]![Дата рождения]) Or Day(Now())=Day([Общий]![Дата рождения])));Year(Now())-Year([Дата рождения]);Year(Now())-Year([Дата рождения])-1)
Ejik1974 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисления возраста Ayubkhon Microsoft Office Access 3 13.04.2012 18:19
Запрос на вывод возраста Warhead Microsoft Office Access 2 13.10.2009 20:56
Подсчет возраста по дате рождения Zemka Microsoft Office Access 1 29.05.2009 17:18
Кризис (мелкого возраста) DeKot Свободное общение 4 23.12.2008 14:48
С какого возраста вы программируете? veter_s_morya Свободное общение 2 27.05.2008 17:10