Трудовой стаж
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)незначительно, но все же наверняка. Спасибо! Закрыто.