[英]dynamic date range of one year in Proc SQL pass through query
SAS和SQL的新手,正在努力在PROC SQL中創建動態范圍。
截至目前,代碼已被硬編碼為-
在'201607'和'201706'之間的xxxx.xx_ccyymm_xx。 嘗試創建動態范圍,以便在下個月運行該動態范圍時,其取值為201608和201707。
*變量以字符串格式存儲日期
有人建議出路!!
真誠的感謝。
在proc sql
:
. . .
where xxxx.xx_ccyymm_xx <= put(today(), yymmn6.) and
xxxx.xx_ccyymm_xx <= put(intnx('year', today(), 1), yymmn6.)
您可以使用宏變量來保存字符串。 您可以使用%SYSFUNC()調用INTNX()函數來按月調整日期。 您可以使用自動宏變量&SYSDATE9以DATE9格式開始SAS會話的日期,或者調用DATE()函數以獲取實際的當前日期。
%let today=%sysfunc(date(),date9);
然后,您可以從中生成YYYYMM格式的字符串。
%let current_month=%sysfunc(putn("&today"d,yymmn6));
%let start_month=%sysfunc(intnx(month,"&today"d,-11),yymmn6);
然后在查詢中使用宏變量
where myvar between "&start_month" and "¤t_month"
如果要基於運行時應用它:
xxxx.xx_ccyymm_xx between
left(convert(varchar,dateadd(month,-11,getdate()),112),6)
and
left(convert(varchar,getdate(),112),6)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.