2015-11-04 3 views
0

Я хочу создать даты, которые будут автоматически рассчитываться SAS на основе текущей даты. Даты, которые я хочу, чтобы вычислить являются:SAS Даты Программно

В следующем квартале в формате YYQ (например, 161)
текущего года в формате YYYY (например, 2015)
субботу перед предыдущей субботой в формате DDMMMYYYY (например, 24OCT2015)
предыдущая пятница в формате DDMMMYYYY (например 30OCT2015)
в первый день текущего квартала в формате DDMMMYYYY (например 01OCT2015)
первого день текущего месяца в формате DDMMMYYYY (например 01OCT2015)
Последний день текущего месяца в формате DDMMMYYYY (например, 31OCT2015)

+0

Так что ваш вопрос? Это не кодирование, пожалуйста, напишите, что вы пробовали. Подсказка - это функция INTNX. – Reeza

ответ

2

Следующая четверть

qtr = intnx('quarter',date(),1); 
format qtr yyqn4.; 

Текущий год

year = date(); 
format year year4.; 

Суббота Перед Предыдущая суббота

sat = intnx('week.7',date(),-2); 
format sat date9.; 

Предыдущая пятница

fri = intnx('week.6',date(),-1); 
format fri date9.; 

Первый день текущего квартала

qstart = intnx('quarter',date(),0); 
format qstart date9.; 

Первый день текущего месяца

mstart = intnx('month',date(),0); 
format mstart date9.; 

Последний день текущего месяца

mend = intnx('month',date(),0,'end'); 
format mend date9.; 
+0

Ваша формула mstart и исправления точно такие же? – Reeza

+3

Для недельных интервалов часто лучше использовать 'week.x' (где' x' - день недели, 1 [Солнце] - 7 [Сб]), а не применение смещения впоследствии. Вы можете применить то же самое к другим интервалам, например. «month.20» - это месячный интервал, основанный на 20-м. –