Трудовой стаж

0 (0)
  • Развернуть Трудовой стаж ( bumb  03.10.2014 12:09 )
    5(1)
    Имеется запись в базе "Дата поступления на работу".
    Необходимо узнать стаж работы. Из таблицы она выгружается в формате date. Когда вычитываю его от текущей даты, результат выдает в днях. Посчитал неправильным делить его на 365, потому что високосные учитывать нужно, однако не знаю как это реализовать.
    • Развернуть как я понимаю нужно среднее количество дней в промежутке между двумя годами ( kalyakin  06.10.2014 10:13 )
      5(1)
      macro average_days(_date : date) : double
        var cd, cm, cy;
        var _d, _m, _y;
        DateSplit(date(), cd, cm, cy);
        DateSplit(_date, _d, _m, _y);
        return double(date(1, 1, cy) - date(1, 1, _y))/double(cy - _y); 
      end;
      

      • Развернуть ответ ( bumb  07.10.2014 14:20 )
        5(1)
        вернее мне нужно рассчитать трудовой стаж в годах. Допустим поступил на работу 20.01.2011, отнимаем от текущей даты, а функция возвращает мне в днях, а нужно в годах. Просто так делить на 365 нельзя, потому что с того момента, как он поступил, может пройти высокосный год и рассчеты будут неправильны.
        • Развернуть стаж получится чуточку больше, вот пример ( kalyakin  07.10.2014 14:30 )
          5(1)
          macro average_days(_date : date) : double
            var cd, cm, cy;
            var _d, _m, _y;
            DateSplit(date(), cd, cm, cy);
            DateSplit(_date, _d, _m, _y);
            return double(date(1, 1, cy) - date(1, 1, _y))/double(cy - _y); 
          end;
          
          var x : double = (date() - date(20,01,2011))/average_days(date(20,01,2011));
          var y : double = (date() - date(20,01,2011))/double(365);
          println(x);
          println(y);
          

          Вывод:
          3.7117
          3.7151
          • Развернуть Спасибо ( bumb  07.10.2014 14:42 )
            5(1)
            незначительно, но все же наверняка. Спасибо! Закрыто.