![]() |
|
![]() ![]() ![]() |
|
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Уважаемые, столкнулся с такой задачкой (я в фокспро только по хелпам ориентируюсь
![]() мне надо определить возраст человека в годах от конкретной даты, т.е. к примеру, человек несовершеннолетний. В SQL мне просто, а в Фоксе не смог аналоги функций найти... Вот как это выглядит (один из вариантов) в SQL DATEADD(YEAR, -18, '2007.31.05') >= born_date, т.е. вычитает 18 лет от конкретной даты (не просто 2007-18, а календарных) и сравниваем с датой рождения. Добавлено @ 12:16 Вот уточняю в чем загвоздка: если человек родился 05.06.2000 , а отчет ведётся от 01.01.2007, то ему не 7 лет ![]() ![]() Заранее благодарю за помощь! P.S.: если что-то не до конца объяснил, извини, спрашивайте, уточню. Это сообщение отредактировал(а) nitr - 4.6.2007, 12:14 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
есть одна мысль, но как-то страшно от погрешностей (високосные года)
есть др. варианты с учетом високсных...? Это сообщение отредактировал(а) nitr - 3.6.2007, 23:27 |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Показывает разницу между сегодняшней датой (date() ) и датой рождения (dat - переменная или поле в таблице). -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
вот ещё нашел (но так же не определяет високсные :( ):
жду от вас вариантов ![]() |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
GOMONTH - я такой функции не знал даже.
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Данкинг, данная ф-ция считает високосные?
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Не знаю, не пробовал!
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
![]() если человек родился 05.06.2000 , а отчет ведётся от 01.01.2007, то ему не 7 лет ![]() ![]() P.S.: немного сам уже запутался, но сейчас уже уточнил, т.е. считать надо днями... Добавлено через 58 секунд если же перегонять в дни обычными математическими способами, то ошибка или погрешность, т.к. есть високосные... |
|||
|
||||
Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
а причем тут високосные года при такой задачи? в задаче же достаточно просто поменять год, оставив в силе день и месяц. или не понятна задача
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Cashey, согласен, я тоже оп "первости" так и ответил. Меня попросили узнать... позже в вопросе я написал уточнение... Повторюсь:
надо определить возраст от определённой даты, т.е. известны две даты. Как пример: дата отсчета - 31.05.2007 дата ДР - 30.11.1989 Если мы вычтим год, то получаем ему 18 лет, ну а реально видно что нет. Cashey, вы предлагаете сохранять, не понял для чего, уточните. Единственное решение, которым я помог человеку, тоже указал
т.е. в разности у нас количество дней, делим на среднее (365+365+365+366)/4, простое решение, но думал есть более распространненые решения. Извиняюсь, если повторно не смог объяснить суть вопроса. Это сообщение отредактировал(а) nitr - 6.6.2007, 21:06 |
|||
|
||||
Cashey |
|
||||||||||||||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
Вы хотите сказать, что если человек родился 01.01.2000 года то 01.01.2018 (пройдет 5 високосных года), то его не признают совершеннолетним? ну ладно, хотите точно, будет вам точно. разность дат возвращает кол-во дней с учетом високостности т.е.
вернет 366 дней, а
вернет 365 дней таким образом, можно определить количество дней до 18 лет (по вашему мнению) на момент формирования отчета. т.е.
вернет вам количество дней (с учетом високосности) между 31.05.07 и 31.05, 18 лет назад. и соответсвенно
сделает выборку по всем лицам моложе 18 календарных дней (с учетом високостности) если же очень хочется принимать за год строго 365 дней то
и тогда
или же я что-то упорно не могу понять..... Добавлено через 4 минуты и 12 секунд все расчеты проводились при установке
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
||||||||||||||
|
|||||||||||||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Cashey, я же привел точный пример
![]()
Я выше указал свой пример с разностью ДАТ, и сказал, что получаем дни, вот и просил др. способы, которые дали бы ответ без погрешностей. Я сейчас не смогу показть при каких датах может быть необходим високосный год, но согласитесь, такое возможно, т.к. ДАТА1-ДАТА2 (в Фоксе) это ДНИ, даже если есть учёт вискоскных, а нужен возраст в "летах". Моё решение по определению возраста от определ. даты (но с погрешностью) (ДАТА1-ДАТА2)/365.25, просто расчитывал, что есть что-то иное. Спасибо всем!!! Благодарю. |
|||
|
||||
Cashey |
|
||||||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
nitr, я специально выбрал даты включающие и не включающие високосные года
ну и что тут не так? сколько по вашему должно быть лет человеку с датой рождения 30.11.1989 когда наступит 31.05.2007 и 30.11.2007? и потом, что вам нужно в итоге? сделать выборку всех лиц у которых на дату Х не исполнилось полных 18 лет? тогда мой запрос
если хотите получить только количество полных лет между 2-мя датами тогда так:
Это решение несколько не точное. Ну как вы собираетесь определять полное количество лет? Взяв только целую часть от полученной дроби? Тогда посмотрите сколько лет получится при датах отчета '30.11.2007' и даты рождения '30.11.1989'. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
||||||
|
|||||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Foxpro/Clipper/Dbase" | |
|
Запрещается! 1. Публиковать ссылки для чисто рекламных целей. 2. Оффтопить, флеймить, говорить не культурно. Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему. Задавайте вопросы правильно - как спросите, так вам и ответят. Разрешено! Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил. Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы. P.S. Размещение рекламы будет строго наказываться! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |