Форум: "Базы";
Текущий архив: 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