Я хочу добавить 1 день к произвольной дате SAS. У меня есть следующий код, который работает, но мне интересно кастрированный баран есть встроенная поддержка для даты расчетов, как это:Расчет даты в SAS
proc fcmp outlib=whatever;
function lastDayInYear(d);
if datdif(d,mdy(12,31,year(d)),'ACT/365')=0 then return(1); else return(0);
endsub;
function advanceDate(d);
if d=. then return(.);
if lastDayInYear(d) then
return(mdy(1,1,year(d)+1));
else
return(datejul(juldate7(d)+1));
endsub;
quit;
Хотя сложение и вычитание чисел в SAS даты работы и должны продолжать работать в будущем, он использует тот факт, что SAS выбрала целое число, чтобы представить его внутри. Всегда нужно использовать INTNX для обработки даты. В маловероятном, но возможном случае, который SAS решит изменить, ваш код будет продолжать работать, если вы используете функцию, а не математические операции. –
Это правда. SAS также может принять решение переключить все свои команды на Fino-Ugric за 300 лет, но я стараюсь не слишком беспокоиться об этом. – itzy