powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как посчитать возраст?
38 сообщений из 38, показаны все 2 страниц
Как посчитать возраст?
    #33383954
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли какая-нибудь фунция для реализации подсчета возраста? То есть отнимаем от системного времени или заданного дату рождения в формате date и получаем сколько дней к примеру или месяцев и дней?
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33383957
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZmiyЕсть ли какая-нибудь фунция для реализации подсчета возраста? То есть отнимаем от системного времени или заданного дату рождения в формате date и получаем сколько дней к примеру или месяцев и дней?Ну дак ты сам все сказал.. отнимай и получай число дней
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33383961
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть если я отниму от одной даты другую то получу число дней?
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33383964
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmiyто есть если я отниму от одной даты другую то получу число дней?А попробовать и проверить?
select :date1-:date2 from dual
подбирай сам даты и убедись
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33383967
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(у этого есть полу-глюки но ты на них вряд ли нарвешься....)
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33383969
Фотография juks@gala.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SxakА попробовать и проверить?
+1
И в RTFM заглянуть
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33383971
Фотография M_IV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Posmotri link
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384004
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmiyто есть если я отниму от одной даты другую то получу число дней?RTFM Date Arithmetic (FAQ)
Перед тем, как начинать "программировать" надо ознакомиться с основной документацией. Меньше глупых вопросов будешь задавать.
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384012
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sxak(у этого есть полу-глюки но ты на них вряд ли нарвешься....)
Кстати насчет етого глюка...
select to_date('01031500','ddmmyyyy')-1
from dual
Никто тут у себя ничего старнного не замечает?
это глюк оракла или пиелсиквел девелопера?
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384016
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sxak Sxak(у этого есть полу-глюки но ты на них вряд ли нарвешься....)
Кстати насчет етого глюка...
select to_date('01031500','ddmmyyyy')-1
from dual
Никто тут у себя ничего старнного не замечает?
это глюк оракла или пиелсиквел девелопера?
Навигатор вообще ошибку говорит но свою внутреннюю...
когда-то давно была идея посмотреть что будет есл вычислить дату которая отсутствует в григор календаре, есть в юлианском, но до появления григор календаря в Европе... Отсюда и такой рпимер
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384100
Фотография juks@gala.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sxak Sxak(у этого есть полу-глюки но ты на них вряд ли нарвешься....)
Кстати насчет етого глюка...
select to_date('01031500','ddmmyyyy')-1
from dual
Никто тут у себя ничего старнного не замечает?
это глюк оракла или пиелсиквел девелопера?
Оракла вроде посчитал ....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> select to_date('01-03-1500','dd-mm-yyyy')- 1  from dual
   2   /

TO_DATE(' 01 - 03 - 1500 
-------------------
 29 . 02 . 1500   00 : 00 : 00 

SQL> select  1500 / 12  from dual
   2   /

    1500 / 12 
----------
        125 

Девелопер таки жжот
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384125
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не я конечно все понимаю. но видимо редко вам это приходиться делать как то видел реализацию через подсчет дней, народ оччень удивлялся скорости работы функции на тысяче людей, долго ждать приходилось однако.
Видимо все забыли что есть и высокосные годы а считать их ручками очень тяжко, лучше используйте функцию month_beetwen, и получите месяцы между двумя датами, а для вычисления возраста остаеться разделить на 12 :)
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384134
whoami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL> alter session set nls_date_format='DD-MM-YYYY';

Session altered.

SQL> select to_date('01031500','ddmmyyyy')-1 from dual;

TO_DATE('0
----------
29-02-1500


или я чего-то не догнал?
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384139
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
whoamiили я чего-то не догнал?Все то же самое на в SQL Navigatore попробуй
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384143
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из девелопера
Код: plaintext
1.
2.
   	TO_DATE('01031500','DDMMYYYY')
 1 	 00 . 00 . 0000 
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384151
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из плюса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select to_date('01031500','ddmmyyyy') -  1  from dual
   2   /

TO_DATE('
---------
 29 -FEB- 00 

SQL> 

выходит, что глюк девелопера :)
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384164
AndrK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да народ всякими сторонними тулзами пользуется
а не sqlplus, а там все как-то странно получается,
например в TOAD попробуйте поменять значение в поле Number(16) где
все цифры заполнены, результат интересный получается
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384597
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все авно не пойму, вот какой возраст к примеру если дата рождения 10.11.1990 на момент 12.12.2004? Как посчитать кол-во дней-то????
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384611
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мде...
Дата2 - Дата1 = кол-во дней между датами...
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384618
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имелось в виду в формате кол-во лет, месяцев и дней.
Не буду ж я потом полученные дни делить на 365 и остаток на 30.
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384635
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
select extract(year from sysdate),
       extract(month from sysdate),
       extract(day from sysdate)
from   dual
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384650
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZmiyВсе авно не пойму, вот какой возраст к примеру если дата рождения 10.11.1990 на момент 12.12.2004? Как посчитать кол-во дней-то????Так, как принято в вашей информационной системе. А как это принято у вас , никто из нас не скажет. Скажет только тот, кто этот формат выдумал.

Блин, понаплодил тем и нихера в них не хочешь ни читать, ни думать. Заколебал.
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384655
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рискну предложить :)
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT TRUNC(MONTHS_BETWEEN(NOW, BORN) /  12 ) YEARS
      ,TRUNC(MONTHS_BETWEEN(NOW, BORN)) MONTHS
      ,NOW - BORN DAYS
FROM (SELECT TO_DATE('10.11.1990', 'DD.MM.YYYY') BORN
            ,TO_DATE('12.12.2004', 'DD.MM.YYYY') NOW
      FROM DUAL)
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384657
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полные года и месяцы можно:
Код: plaintext
1.
2.
select (to_date('12.12.2004', 'dd.mm.yyyy') - to_date('01.11.1990', 'dd.mm.yyyy')) year to month
from dual;

Со днями напряг, надо дальше разбираться.
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384699
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как в нашей системе - я сам не знаю)а читаю уж полдня.
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33384712
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmiyкак в нашей системе - я сам не знаю)а читаю уж полдня.

Можно я этот мрак закрою?
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33533782
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select trunc(months_between(Конечная_дата, Начальная_дата)/12) from dual
Количество полных лет.
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33534467
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищи у Кайта. У него были рекомендации по вычислению возраста. Основная идея - считать в месяцах(поскольку чило месяцев в году фиксировано), а оставшийся кусочек - в днях.


"Странно, но у нас все работает..."(с) HelpDesk
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #33535564
3#88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZmiyЕсть ли какая-нибудь фунция для реализации подсчета возраста? То есть отнимаем от системного времени или заданного дату рождения в формате date и получаем сколько дней к примеру или месяцев и дней?

SQL> select abs(trunc(months_between( d1, d2 ) /12 )) years,
2 greatest(d1,d2)-add_months( least(d1,d2),
3 12*abs(trunc(months_between( d1, d2 ) /12 )) ) days
4 from ( select to_date( '25-jan-1910' ) d1,
5 to_date(SYSDATE,'DD-MON-YYYY') d2
6 from dual );

YEARS DAYS
---------- ----------
96 15
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как посчитать возраст?
    #39309760
Фотография mcwhite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT FLOOR(MONTHS_BETWEEN(:p_curr_date
                           ,CASE WHEN -- Если в году даты p_curr_date нет 29 февраля, то датой рождения принимается 1 марта
                                          EXTRACT(DAY FROM :p_birth_date) = 29
                                      AND EXTRACT(MONTH FROM :p_birth_date) = 2
                                      AND EXTRACT(DAY FROM LAST_DAY(ADD_MONTHS(TRUNC(:p_curr_date,'year'),1))) < 29
                                 THEN :p_birth_date + 1
                                 ELSE :p_birth_date
                            END
                           ) / 12) AS age
  FROM dual
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39309790
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcwhite,

ну ладно молодняк.... но, ты то что, 10 лет назад функцию sleep нашел и в цикла на 10 лет себя загнал, а теперь проснулся и решил выдать свой вариант?
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39309803
Фотография mcwhite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintmcwhite,

ну ладно молодняк.... но, ты то что, 10 лет назад функцию sleep нашел и в цикла на 10 лет себя загнал, а теперь проснулся и решил выдать свой вариант?

Нет, просто нек. время назад применил такую логику расчета возраста, вот и решил, так сказать, "вынести на суд общественности". Ну и вместо создания нового топика поместил в наиболее подходящий из уже существующих. Только и всего. :)
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39309877
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcwhiteVintmcwhite,

ну ладно молодняк.... но, ты то что, 10 лет назад функцию sleep нашел и в цикла на 10 лет себя загнал, а теперь проснулся и решил выдать свой вариант?

Нет, просто нек. время назад применил такую логику расчета возраста, вот и решил, так сказать, "вынести на суд общественности". Ну и вместо создания нового топика поместил в наиболее подходящий из уже существующих. Только и всего. :)
насчет 100/400х сот лет тоже предусмотрели?

....
stax
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39311355
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делал попросту так:
Может пригодится:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with tab_s as ( select to_date('09.11.2016', 'dd.mm.yyyy')+1  /* если считаешь что 8 - то убери +1*/ a  
                     , to_date('01.01.2014', 'dd.mm.yyyy') b from dual ),
     tab as ( select a, b, months_between( a, b ) dt from tab_s )

  select trunc( dt / 12 ) || ' лет ' || mod( trunc( dt ), 12 ) || ' месяцев ' ||
         case when extract( day from b ) > extract( day from a )
              then greatest( extract( day from last_day( add_months(a, -1) ) ), extract( day from b ) ) +
                   extract( day from a ) - extract( day from b )
              else extract( day from a ) - extract( day from b )           
            end || ' дней' dt
          from tab;
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39311358
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что-то типа такого, но забросил так как не понадобилось...
Нужно в более красивый вид привести.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
DECLARE
  DateS   DATE := TO_DATE('01.01.2014','dd.mm.yyyy'); 
  DatePo   DATE := TO_DATE('09.11.2016','dd.mm.yyyy')+1; 
  Days_cnt    NUMBER;
  Months_Cnt  NUMBER;
  Years_Cnt   NUMBER;
  Y_string VARCHAR2(4):='лет';
  M_string VARCHAR2(10):='месяцев';
  D_string VARCHAR2(10):='дней';
                                       
BEGIN


  Months_Cnt := mod( trunc( months_between(DatePo,DateS) ), 12 );
  Years_Cnt  :=  trunc( months_between(DatePo,DateS)/12);

  IF  EXTRACT( DAY  FROM  DateS ) > EXTRACT( DAY FROM DatePo )
              THEN  Days_cnt:= GREATEST( EXTRACT( DAY FROM last_day( add_months(DatePo, -1) ) ), EXTRACT( DAY FROM  DateS ) ) 
                +  EXTRACT ( DAY  FROM  DatePo ) - EXTRACT ( DAY  FROM  DateS );
              ELSE Days_cnt:= EXTRACT( DAY FROM DatePo ) - EXTRACT( DAY FROM  DateS );
                END IF;


dbms_output.put_line('года='||Years_Cnt);
dbms_output.put_line('месяцs='||Months_Cnt);
dbms_output.put_line('дни='||Days_cnt);

------YEARS----------
      IF (MOD(Years_Cnt,
              10) = 1) AND
         (Years_Cnt NOT IN (11,111,211,311,411,511))
      THEN
        Y_string := 'год ';
      ELSIF (MOD(Years_Cnt,10) IN (2,3,4)) AND
            (NOT (Years_Cnt IN (12,13,14)))
      THEN
        Y_string := 'года';
      ELSE
        Y_string := 'лет';
      END IF; 

---------MONTHS--------
      IF Months_Cnt = 1
      THEN
        M_string :=  'месяц';
      ELSIF (Months_Cnt IN (2,3,4))
      THEN
        M_string :=  'месяца';
      ELSE
        M_string := 'месяцев';
      END IF;

   -------DAYS---------- 

      IF (MOD(Days_cnt,100) IN (11,12,13, 14)) OR
         (MOD(Days_cnt,10) NOT IN (1,2,3,4))
      THEN
        D_string :='дней';
      ELSIF (MOD(Days_cnt,10) = 1)
      THEN
        D_string :=  'день';
      ELSE
        D_string := 'дня';
      END IF;

   ----------------- 

dbms_output.put_line('-----------------' );
dbms_output.put_line(Years_Cnt||' '||Y_string||' '||Months_Cnt||' '||M_string||' '||Days_cnt ||' '||D_string );
END;


Если кто-то подскажет как поинтереснее окончание слов сделать - буду благодарен и оставлю на память )))
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39311492
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Moss
Если кто-то подскажет как поинтереснее окончание слов сделать - буду благодарен и оставлю на память )))
ищите програмульки типа прописью с учетом рода (м/ж)


ps
много ++++ самому написать/понять
когда я переходил с асемблера и рл/1 третья моя прграмулька на фоксе была прописью
я понимал что тригодится
......
stax
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39311689
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MossЕсли кто-то подскажет как поинтереснее окончание слов сделать
рубль/рубля/рублей
...
Рейтинг: 0 / 0
Как посчитать возраст?
    #39311699
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как посчитать возраст?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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