1

我有一个 SAS 数据集,其中名为ISSUE_DATE文本类型的列之一是日期值,格式为'YYYYMMDD'. 我正在针对此数据集编写查询,并希望检索ISSUE_DATE<= today -2 的所有行。我该如何为此编写查询。

SELECT * FROM WORK.DATASET WHERE ISSUE_DATE <= today()-2. 

我是 SAS 新手,不太了解日期函数和转换。任何帮助是极大的赞赏。

谢谢

4

2 回答 2

6

您需要使用 INPUT 函数和相关信息将数据类型转换为数字,以便 SAS 识别日期。您可以在 WHERE 子句中执行此操作,这样可以节省创建额外列的时间。所以您的查询将如下所示:

SELECT * FROM WORK.DATASET WHERE INPUT(ISSUE_DATE,YYMMDD8.) <= today()-2

于 2012-08-21T08:01:22.720 回答
1

跟进基思的回答,这样做可能更有效:

SELECT * 
FROM   WORK.DATASET 
WHERE  ISSUE_DATE <= PUT( today()-2 , YYMMDDN8.)

这将使 SAS 不必在每次观察时运行 INPUT 函数。

于 2012-08-21T13:30:49.853 回答