![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как с помощью SQL-запроса узнать сколько человеку лет? [D5, Access]
AlexTregubov © (2005-02-16 11:53:00)Надо узнать сколько человеку сегоднялет. Использую запрос
SELECT YEAR(NOW)-YEAR(DR) AS V FROM ...- не совсем подходит, ведь это значение верно только после дня рождения и не верно до даты рождения.
sniknik (2005-02-16 16:40:00) [1]уточнение
в конце вместо Now поставить Int(Now) (время "отсечь")
sniknik (2005-02-16 16:35:00) [2]нда, по моему в мой "перевод" вкралась ошибка
вроде так правильнее (но проверять все равно не буду ;о)))
Year(Now) - Year(BirthDate) + (DateSerial(Year(Now), Month(BirthDate), Day(BirthDate)) < Now)
(true в аксесс -1 false 0)
Johnmen (2005-02-16 14:13:00) [3]>Anatoly Podgoretsky © (16.02.05 13:53) [10]
Даже делить на 365,25 не даст правильный результат во всех возможных случаях.
Anatoly Podgoretsky (2005-02-16 13:53:00) [4]А високосные ?
а делить на 365,25
И о каких високосных можно говорить в этом случае, результат вычитания не дата, а интервал.
sniknik (2005-02-16 13:04:00) [5]> Аналог в Delphi:
"перевод" в access
Year(Now) - Year(BirthDate) + 1 - DateSerial(Year(Now), Month(BirthDate), Day(BirthDate))
ЮЮ (2005-02-16 12:26:00) [6]>Задача то обычная, может кто решал красиво?
Задача, обычно ставится, "юбиляры в этом году", "уходящие на пенсию в этом году", но никогда,обычно, не ставится, как возраст на текущую дату
>и от громоздкости хочется избавиться
да какая там громоздкость-то? Функций в Accese не знаю, но, наверняка есть.
Аналог в Delphi:
Year(Now) - Year(BirthDate) + 1 -
Integer(
Encode(Year(Now), Month(BirthDate), Day(BirthDate) < Now
)
Digitman (2005-02-16 12:15:00) [7]SELECT Int(Int(Now()-[dr])/365) AS V FROM ..
AlexTregubov (2005-02-16 12:14:00) [8]ЮЮ - я это и сам понимаю, поэтому и спрашиваю, и от громоздкости хочется избавиться. Задача то обычная, может кто решал красиво?
Johnmen (2005-02-16 12:13:00) [9]>clickmaker © (16.02.05 12:12) [4]
А високосные ?
:)
clickmaker (2005-02-16 12:12:00) [10]datediff(day, BirthDate, getdate()) / 365
Virgo_Style (2005-02-16 12:11:00) [11]А так :
SELECT YEAR(NOW-DR) AS V FROM
нельзя сделать? Я, честно говоря, не помню...
ЮЮ (2005-02-16 12:07:00) [12]>после дня рождения и не верно до даты рождения.
В смысле? Естественно, что до дня рождения человеку меньше полных лет, чем после :)
Johnmen (2005-02-16 12:03:00) [13]Я не помню, есть в Аксесе ф-ии выделения дня, месяца и т.п. Есть ли условная ф-ия.
Если есть, то можно написать. Но будет громоздко...