Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Как с помощью SQL-запроса узнать сколько человеку лет?   Найти похожие ветки 

 
AlexTregubov   (2005-02-16 11:53) [0]

Надо узнать сколько человеку сегодня лет. Использую запрос SELECT YEAR(NOW)-YEAR(DR) AS V FROM ... - не совсем подходит, ведь это значение верно только после дня рождения и не верно до даты рождения.


 
Johnmen ©   (2005-02-16 12:03) [1]

Я не помню, есть в Аксесе ф-ии выделения дня, месяца и т.п. Есть ли условная ф-ия.
Если есть, то можно написать. Но будет громоздко...


 
ЮЮ ©   (2005-02-16 12:07) [2]

>после дня рождения и не верно до даты рождения.

В смысле? Естественно, что до дня рождения человеку меньше полных лет, чем после :)


 
Virgo_Style ©   (2005-02-16 12:11) [3]

А так :

SELECT YEAR(NOW-DR) AS V FROM

нельзя сделать? Я, честно говоря, не помню...


 
clickmaker ©   (2005-02-16 12:12) [4]

datediff(day, BirthDate, getdate()) / 365


 
Johnmen ©   (2005-02-16 12:13) [5]

>clickmaker ©   (16.02.05 12:12) [4]

А високосные ?
:)


 
AlexTregubov   (2005-02-16 12:14) [6]

ЮЮ - я это и сам понимаю, поэтому и спрашиваю, и от громоздкости хочется избавиться. Задача то обычная, может кто решал красиво?


 
Digitman ©   (2005-02-16 12:15) [7]

SELECT Int(Int(Now()-[dr])/365) AS V FROM ..


 
ЮЮ ©   (2005-02-16 12:26) [8]

>Задача то обычная, может кто решал красиво?

Задача, обычно ставится, "юбиляры в этом году", "уходящие на пенсию в этом году", но никогда,обычно, не ставится, как возраст на текущую дату

>и от громоздкости хочется избавиться
да какая там громоздкость-то? Функций в Accese не знаю, но, наверняка есть.
Аналог в Delphi:
 Year(Now) - Year(BirthDate) + 1 -
 Integer(
   Encode(Year(Now), Month(BirthDate), Day(BirthDate) < Now
 )


 
sniknik ©   (2005-02-16 13:04) [9]

> Аналог в Delphi:
"перевод" в access
Year(Now) - Year(BirthDate)  + 1 - DateSerial(Year(Now), Month(BirthDate), Day(BirthDate))


 
Anatoly Podgoretsky ©   (2005-02-16 13:53) [10]

А високосные ?

а делить на 365,25
И о каких високосных можно говорить в этом случае, результат вычитания не дата, а интервал.


 
Johnmen ©   (2005-02-16 14:13) [11]

>Anatoly Podgoretsky ©   (16.02.05 13:53) [10]

Даже делить на 365,25 не даст правильный результат во всех возможных случаях.


 
sniknik ©   (2005-02-16 16:35) [12]

нда, по моему в мой "перевод" вкралась ошибка
вроде так правильнее (но проверять все равно не буду ;о)))
Year(Now) - Year(BirthDate) + (DateSerial(Year(Now), Month(BirthDate), Day(BirthDate)) < Now)

(true в аксесс -1 false 0)


 
sniknik ©   (2005-02-16 16:40) [13]

уточнение
в конце вместо Now поставить Int(Now) (время "отсечь")



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
1-1110166617
NexOR
2005-03-07 06:36
2005.03.20
Как правильно установить Kylix ?


14-1109635650
GanibalLector
2005-03-01 03:07
2005.03.20
Интересные книжки читают медики !!!


1-1110281018
zioza
2005-03-08 14:23
2005.03.20
Как сделать что бы при запуске особово файла запускалась моя прог


1-1109782687
Lakshmy
2005-03-02 19:58
2005.03.20
Выделение нескольких строк в TStringGrid


9-1103806612
Макс
2004-12-23 15:56
2005.03.20
Editable mesh





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский