Мне нужно рассчитать цифру, которая соответствует «ближайшему» числу месяцев между двумя датами. Однако стандартная функция SAS (INTCK) не предназначена для рассмотрения ДНЯ его параметров даты (например, код ниже разрешает 0, когда мне нужно округлить до 1).Вопрос SAS DATE - расчет «БЛИЖАЙШИЙ МЕСЯЦ»
Каков наилучший способ решения этой проблемы?
data _null_;
x="01APR08"d;
y="28APR08"d;
z=intck('MONTH',x,y);
put z= ;
run;
EDIT: ответ на комментарий Мартинса.
Я бы обходился до 0 месяцев - я не думаю, что граница актуальна. Функция, которую я пытаюсь воспроизвести (NEAREST_MONTHS), поступает из DCS (приложение Sungard prophet). Теперь я жду возможности провести некоторое тестирование в самом приложении, чтобы больше узнать о том, как он относится к датам (опубликует результаты здесь)).
Файл справки содержит следующее: Категории Даты
Описание
Возвращает разницу между двумя датами до ближайшего числа месяцев. Если вторая дата позже первой даты, то возвращается 0.
Синтаксис
NEAREST_MONTHS (Later_Date, Earlier_Date)
Возврат Тип Целое
Примеры
NEAREST_MONTHS (date1, дата2) Возвращает 8, если date1 является 20/3/1997 и date2 is 23/7/1996
NEAREST_MONTHS (date1, date2) Возвращает 26, если дата1 составляет 20/3/1997, а дата2 равна 1/2/1995
Это сложно, так как вы на самом деле не определить свои правила округления. Например, хотите ли вы округлить интервал между 30APR09 и 01MAY09 до 1 месяца, так как он пересекает границу между двумя разными месяцами или вы будете округлять ее до 0 месяцев, так как это всего лишь однодневный интервал? –