Переменная даты макросов SAS для преобразования в формат гггг-мм-дд для SAS HiveQL - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь настроить автоматические даты макропеременных для запуска сценариев в SAS HiveQL

Обычно я использую что-то подобное для стандартного запроса SAS:

%let start_date = %sysfunc(intnx(month, "&sysdate"d, -1, B));

Однако ядля выполнения запросов HiveQL необходимо преобразовать дату в формат гггг-мм-дд.

Не уверен, как преобразовать дату SAS в этот формат при настройке макропеременных.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Для ночных сов автоматическая макропеременная sysdate - это дата начала сеанса SAS.При длительном сеансе может потребоваться использовать функцию today() для получения текущей даты.

Литералы даты удаленного сквозного доступа также должны быть заключены в одинарные кавычки.

%let   remoteDateLiteralForPassThrough = %str(%')%sysfunc(putn(%sysfunc(today()),yymmdd10.))%str(%');
%put &=remoteDateLiteralPassThrough;

%let   remoteDateTimeLiteralForPassThro = %str(%')%sysfunc(putn(%sysfunc(today()),yymmdd10.))T0:0:0%str(%');
%put &=remoteDateTimeLiteralForPassThro;

Добавлено:Первый день прошлого месяца как 'yyyy-mm-dd'

%let start_date_num = %sysfunc(intnx(month, %sysfunc(today()), -1, B));
%let db_start_date = %str(%')%sysfunc(putn(&start_date_num,yymmdd10.))%str(%');
0 голосов
/ 11 декабря 2018

Вы можете указать формат при использовании %sysfunc():

%let start_date = %sysfunc(intnx(month, "&sysdate"d, -1, B), yymmdd10.);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...