我有一个SAS数据集,其中一个名为ISSUE_DATE的列是文本类型,其日期值格式为'YYYYMMDD'。我正在针对此数据集编写查询,并希望检索ISSUE_DATE为< = today -2的所有行。我该如何为此编写查询。
SELECT * FROM WORK.DATASET WHERE ISSUE_DATE< = today() - 2。
我是SAS新手,对日期功能和转换知之甚少。非常感谢任何帮助。
由于
答案 0 :(得分:6)
您需要使用INPUT功能和相关信息将数据类型转换为数字,以便SAS识别日期。您可以在WHERE子句中执行此操作,从而节省创建额外的列。所以你的查询看起来像:
SELECT * FROM WORK.DATASET WHERE INPUT(ISSUE_DATE,YYMMDD8。)< = today() - 2
答案 1 :(得分:1)
跟进Keith的回答,这样做效率可能更高:
SELECT *
FROM WORK.DATASET
WHERE ISSUE_DATE <= PUT( today()-2 , YYMMDDN8.)
这将使SAS免于必须在每次观察时运行INPUT功能。