在where语句中执行SQL DATE()

时间:2018-07-09 15:37:41

标签: hadoop hive sas proc-sql

由于要计划运行该代码,因此我试图将其编辑为动态代码。 通常,我会在where语句中将日期输入为“ YYYY-MM-DD”,因此为了使其动态化,我将其更改为DATE()。我没有出错,但是我也没有提取数据。我只需要格式方面的帮助,而我的Google搜索没有帮助。

PROC SQL;
CONNECT TO Hadoop (server=disregard this top part);

CREATE TABLE raw_daily_fcast AS SELECT * FROM connection to Hadoop(
SELECT DISTINCT
    a.RUN_DATE,
    a.SCHEDSHIPDATE, 
    a.SOURCE,
    a.DEST ,
    a.ITEM,
    b.U_OPSTUDY, 
    a.QTY,
    c.case_pack_qty

FROM CSO.RECSHIP a
  LEFT JOIN CSO.UDT_ITEMPARAM b
    ON a.ITEM = b.ITEM
  LEFT JOIN SCM.DIM_PROD_PLN c
    ON a.ITEM = c.PLN_NBR

WHERE a.RUN_DATE = DATE()
    AND a.SOURCE IN ('88001', '88003', '88004', '88006', '88008', '88010', '88011', '88012', 
                     '88017', '88018', '88024', '88035', '88040', '88041', '88042', '88047')
);
DISCONNECT FROM Hadoop;
QUIT;

2 个答案:

答案 0 :(得分:0)

更改:

WHERE a.RUN_DATE = DATE() 

收件人:

WHERE a.RUN_DATE =  PUT(date(), YYMMDD10.) AS date 

答案 1 :(得分:0)

当RUN_DATE为字符串时,您可以在SAS端内联生成当前日期字符串

WHERE a.RUN_DATE = %str(%')%sysfunc(date(),yymmdd10.)%str(%')
   AND ...

WHERE a.RUN_DATE = %sysfunc(quote(%sysfunc(date(),yymmdd10.),%str(%')))
   AND ...

对于RUN_DATE是包含DATE9格式值的字符串的情况,请将yymmdd10.更改为date9.