SQL WHERE CURDATE

时间:2018-03-21 08:33:21

标签: sql teradata

我正在尝试完成,我认为这很简单,SQL中的where语句使用CurDate而不是每次运行我的代码时都必须修改日期,我正在寻找where声明要查看360度,从今天开始并向后工作。

我已经尝试过以下所有项目但两项都不会有效,请有人告诉我哪里出错了。

Where LastPD > CurDate()- interval 360 days;
Where LastPD > CurDate()-360;
Where LastPD > CurDate-360;

我正在尝试减少包含超过2000万行数据的文件,以显示过去6/12个月内LastPD或过去6/12个月内AssignDate的数据。

我之前使用过的代码如下:

Data DCARMSLive12LPD;
Set DCARMSLive12;
Where LastPD > '20170320';
run;
Data DCARMSLive12PLC;
Set DCARMSLive12;
Where AssignDate > '20MAr2017'd;
Run;
Data DCARMSLive06LPD;
Set DCARMSLive6;
Where LastPD > '20170920';
run;
Data DCARMSLive06PLC;
Set DCARMSLive6;
Where AssignDate > '20Sep2017'd;
Run;

我想替换where语句中的实际日期,这样每次运行代码时都不必手动更新它们。

3 个答案:

答案 0 :(得分:0)

试试这个:

WHERE LastPD > DATE_SUB(CURDATE(), INTERVAL 360 DAY);

答案 1 :(得分:0)

Teradata使用标准SQL

CURRENT_DATE - INTERVAL '360' DAY

或更短(非标准)

CURRENT_DATE -360

日期文字也是标准SQL:

DATE '2018-03-21'

答案 2 :(得分:0)

谢谢大家,我最终解决了以下问题,因为我无法获得上述任何建议。

我将current_date添加为数据的变量,重新格式化yymmdd8。到Date9。并使用以下代码

Where LPD > Current_Date -360;

或     其中AssignDate> Current_Date -180;