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

Зачем же изобретать велосипед, если можно вычислить в одну строчку?
...
Рейтинг: 0 / 0
Подскажите!!
    #35605953
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan.KokovЗачем же изобретать велосипед, если можно вычислить в одну строчку?
я етой формуле не верю:)
а если честно, не знал: ве кживи, век учись
...
Рейтинг: 0 / 0
Подскажите!!
    #35606149
Ivan.Kokov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ceshkaIvan.KokovЗачем же изобретать велосипед, если можно вычислить в одну строчку?
я етой формуле не верю:)
а если честно, не знал: ве кживи, век учись
Правильно делаете, что не верите :) У формулы есть некоторые ограничения. Правда, не настолько серьезные, чтобы отказаться от нее для вычисления возраста
...
Рейтинг: 0 / 0
Подскажите!!
    #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
Подскажите!!
    #35606317
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WolferzКак вычислить возраст сотрудника, зная дату рождения?
Посмотрите документацию на функции (учитываются високосные года):
DATEADD
DATEDIFF
Есть аналоги этих функций и для COS.
...
Рейтинг: 0 / 0
Подскажите!!
    #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
Подскажите!!
    #35606505
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да... по ходу, лучше велосипед...
...
Рейтинг: 0 / 0
Подскажите!!
    #35606657
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovПриведите хоть один, если не сложно.
Вы уже сами привели:
Код: plaintext
1.
2.
w $system.SQL.DATEADD(...)
w $system.SQL.DATEDIFF(...)
...
Рейтинг: 0 / 0
Подскажите!!
    #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
Подскажите!!
    #35607265
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WolferzКак вычислить возраст сотрудника, зная дату рождения?
Делаем так:

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

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

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

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

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


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