【问题标题】:Having Troubling Filtering Records Down Using Data Statements in PROC SQL & Teradata在 PROC SQL 和 Teradata 中使用数据语句过滤记录时遇到麻烦
【发布时间】:2020-02-22 02:32:53
【问题描述】:

在 proc sql 中,我希望通过日期范围过滤我的结果,但我不断收到错误。我的日期变量是 DATE8,格式是 04JUL1776。

我尝试在代码中的特定日期周围添加一些输入。这并没有产生任何结果。;

proc sql noprint;
%tdconnectTo;
create table ptemp.DL2_2018_IDS as
select * from connection to Teradata (
select     distinct
           PERS_ID
     , REC_EFF_DT
     , REC_TERM_DT
from       oeauacbrgdlp1.DV_DIM_MBR
where      PERS_ID is not null
and        REC_EFF_DT <= '31DEC2018'd and REC_TERM_DT >= '01JAN2018'd
order by PERS_ID
);
disconnect from teradata;
quit;

【问题讨论】:

  • Proc SQL 是 SAS,是吗?如果是这样,您可能应该添加该标签。你遇到了什么错误?

标签: sql date sas teradata


【解决方案1】:

如果您使用传递 SQL,则需要以数据库可接受的形式提供值。对于 SQL 日期文字:

REC_EFF_DT <= date'2018-12-31' and REC_TERM_DT >= date'2018-01-01'

或者如果您出于某种原因确实需要以 SAS DATE9 形式提供字符串值,您应该明确告诉数据库将该字符串转换为日期:

REC_EFF_DT <= to_date('31DEC2018','DDMONYYYY') and REC_TERM_DT >= to_date('01JAN2018','DDMONYYYY')

REC_EFF_DT <= CAST('31DEC2018' AS DATE FORMAT'DDMMMYYYY') and REC_TERM_DT >= CAST('01JAN2018' AS DATE FORMAT'DDMMMYYYY')

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2013-11-11
    • 2016-11-27
    • 1970-01-01
    • 2020-11-02
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多