Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Подскажите!! / 24 сообщений из 24, страница 1 из 1
21.10.2008, 09:53
    #35605861
Wolferz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Как вычислить возраст сотрудника, зная дату рождения?
...
Рейтинг: 0 / 0
21.10.2008, 10:08
    #35605900
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Можно так
($H-$ZDH("01/01/1980")) \ 365.2425
Т.е. (Хоролог - Дата рождения) \365.2425
...
Рейтинг: 0 / 0
21.10.2008, 10:09
    #35605901
ceshka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Wolferz,
берёте дату рождения, и по 365/366 дней прибавляете к дате рождения, если она до/после 28,02/29,02,т.е. сколько надо прибавить, чтоб до след. дня рожденья прошел именно год, када дойдете до даты, относительно которой ищете (или больше нее), нашли число полных лет
...
Рейтинг: 0 / 0
21.10.2008, 10:10
    #35605903
Ahil79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
возраст=Год на сегодняшний момент - год рождения
...
Рейтинг: 0 / 0
21.10.2008, 10:14
    #35605920
Ahil79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Извиняюсь неправильно ответил :)
...
Рейтинг: 0 / 0
21.10.2008, 10:19
    #35605930
Wolferz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Смысл вобщем в том что пользователь должен ввести дату ДД.ММ.ГГГГ и возрост (к примеру 45)
и надо выбрать всех кто подходит этому условию.
...
Рейтинг: 0 / 0
21.10.2008, 10:22
    #35605937
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
ceshkaWolferz,
берёте дату рождения, и по 365/366 дней прибавляете к дате рождения, если она до/после 28,02/29,02,т.е. сколько надо прибавить, чтоб до след. дня рожденья прошел именно год, када дойдете до даты, относительно которой ищете (или больше нее), нашли число полных лет

Зачем же изобретать велосипед, если можно вычислить в одну строчку?
...
Рейтинг: 0 / 0
21.10.2008, 10:27
    #35605953
ceshka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Ivan.KokovЗачем же изобретать велосипед, если можно вычислить в одну строчку?
я етой формуле не верю:)
а если честно, не знал: ве кживи, век учись
...
Рейтинг: 0 / 0
21.10.2008, 11:35
    #35606149
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
ceshkaIvan.KokovЗачем же изобретать велосипед, если можно вычислить в одну строчку?
я етой формуле не верю:)
а если честно, не знал: ве кживи, век учись
Правильно делаете, что не верите :) У формулы есть некоторые ограничения. Правда, не настолько серьезные, чтобы отказаться от нее для вычисления возраста
...
Рейтинг: 0 / 0
21.10.2008, 12:09
    #35606242
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
На вскидку, формула врет в день, предшествующий дню рождения, если человек родился в високосном году c 1.01 по 29.02. Например:
Код: plaintext
1.
2.
USER>s h=$zdh("10/2/2009", 4 )
USER>w (h-$ZDH("11/2/1968", 4 )) \  365 . 2425 
 41 
...
Рейтинг: 0 / 0
21.10.2008, 12:39
    #35606317
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
WolferzКак вычислить возраст сотрудника, зная дату рождения?
Посмотрите документацию на функции (учитываются високосные года):
DATEADD
DATEDIFF
Есть аналоги этих функций и для COS.
...
Рейтинг: 0 / 0
21.10.2008, 13:11
    #35606417
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
DATEDIFF, похоже, врет еще грубее, чем формула. Продолжая пример:
Код: plaintext
1.
2.
SOBIG>w $system.SQL.DATEDIFF("yy",$zdh("11/3/1968", 4 ),$zdh("1/1/2009", 4 ))
 41 
Хотя в документации сказано: "добавлена для совместимости с Sybase and Microsoft SQL Server". Может, и там так же врет?servitЕсть аналоги этих функций и для COSПриведите хоть один, если не сложно.
...
Рейтинг: 0 / 0
21.10.2008, 13:44
    #35606505
ceshka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
да... по ходу, лучше велосипед...
...
Рейтинг: 0 / 0
21.10.2008, 14:24
    #35606657
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Alexey MaslovПриведите хоть один, если не сложно.
Вы уже сами привели:
Код: plaintext
1.
2.
w $system.SQL.DATEADD(...)
w $system.SQL.DATEDIFF(...)
...
Рейтинг: 0 / 0
21.10.2008, 15:45
    #35606942
Tamozhnya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
SELECT Extract(YEAR FROM CASE
WHEN SYSDATE >= To_Date('13.03.' || To_Char(Extract(YEAR FROM SYSDATE))) THEN
To_Date('13.03.' || To_Char(Extract(YEAR FROM SYSDATE)))
ELSE
To_Date('13.03.' || To_Char(Extract(YEAR FROM SYSDATE) - 1))
END) - Extract(YEAR FROM To_Date('13.03.1974'))
FROM Dual
...
Рейтинг: 0 / 0
21.10.2008, 17:13
    #35607265
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
WolferzКак вычислить возраст сотрудника, зная дату рождения?
Делаем так:

Код: plaintext
1.
2.
3.
4.
; день рождения (ГГГГММДД)
s d1= 19650324 
; день на который нужно считать возраст (ГГГГММДД)
s d2= 20081021 
s age=(d2-d1)/ 10000 \ 1 
...
Рейтинг: 0 / 0
21.10.2008, 18:40
    #35607615
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Почему не
Код: plaintext
s age=(d2-d1)\ 10000 
?
...
Рейтинг: 0 / 0
22.10.2008, 04:31
    #35608127
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Код: plaintext
1.
2.
3.
4.
; день рождения (ГГГГММДД)
s d1= 19650324 
; день на который нужно считать возраст (ГГГГММДД)
s d2= 20081021 
s age=(d2-d1)/ 10000 \ 1 
[/quot]
Я неподдельно восхищен!
Вы сами эту формулу вывели? Или взяли у классиков?
...
Рейтинг: 0 / 0
22.10.2008, 08:27
    #35608220
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Alexey MaslovПочему не
Код: plaintext
s age=(d2-d1)\ 10000 
?
Это я уже замудрился...
...
Рейтинг: 0 / 0
22.10.2008, 08:28
    #35608222
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Ivan.KokovВы сами эту формулу вывели? Или взяли у классиков?
Это было более 15-ти лет назад... Сочинили т.с. в кулуарах во время перекура...
...
Рейтинг: 0 / 0
22.10.2008, 09:31
    #35608302
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
krvsa,

А вывод поясните? Я так понимаю, что 10000 - это число вариантов от 0 до 9999, а вычитание как обычно, с займом при необходимости из старшего разряда, пусть даже и ограничения в разрядах.
Кстати, делитель 365.2425 тоже откуда у Кирстена взялся? Если посчитать среднее количество дней в году, то мне на эту цифру не удалось выйти. Правда, до 1841 года считать не пробовал, может быть и действительно :)
...
Рейтинг: 0 / 0
22.10.2008, 09:52
    #35608343
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
Вычитание самое обычное... Деление на 10000 нужно для "отсечения" лет от остального "мусора", который после вычитания на возраст не влияет.

Наша формула проверена 15-тилетним сроком и нареканий у клиентов не вызывала. Использовалась в начислении денежных средств, т.ч. проверена.

А про "делитель" это к Кирстену...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
24.06.2009, 21:28
    #36058560
alarin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
SET age = CEILING((receipt_data - date_of_birth)/10000-1
...
Рейтинг: 0 / 0
25.06.2009, 09:02
    #36058837
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите!!
и что это было, зачем поднимать тему почти годовалой давности, чтобы написать то, что естественно не будет работать

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Подскажите!! / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]