首页 > 解决方案 > 过滤日期的公式

问题描述

我的公式在选择日期时遇到问题,在 SAS 中使用 PROc SQL。我做错了什么?谢谢你们。问候,杰夫

我使用这个编码器:

FROM
  VTXBUSS.s
WHERE
  t1.ifrs_stage_date_at_start IS ’ 31DEC2017% ’
ORDER BY
  t1.customer_id,

我得到一个语法错误。日期格式如下:31DEC2017:00:00:00.000000

SAS给出日志:

错误:值 '''n 不是有效的 SAS 名称。警告:未解决宏的明显调用。45 WHERE t1.ifrs_stage_at_start NOT = t1.ifrs_stage_PROV AND t1.ifrs_stage_date_at_start = '31DEC2017%', _ 76 错误 22-322:语法错误,应为以下之一:;, !, !!, &, (, *, * *、+、-、'.'、/、<、<=、<>、=、>、>=、AND、EQ、EQT、EXCEPT、GE、GET、GROUP、GT、GTT、HAVING、INTERSECT、LE , LET, LT, LTT, NE, NET, NOT, OR, ORDER, OUTER, UNION, ^, ^=, |, ||, ~, ~=.

标签: sasproc

解决方案


尝试这个:

FROM
  VTXBUSS.s
WHERE
  t1.ifrs_stage_date_at_start = '31DEC2017'd
ORDER BY
  t1.customer_id,

如果您正在寻找特定的“日期时间”,那么您应该使用,例如:

FROM
  VTXBUSS.s
WHERE
  t1.ifrs_stage_date_at_start = '31DEC2017:00:00:00.000000'dt
ORDER BY
  t1.customer_id,

这是因为,在 PROC SQL 中处理日期时,您必须指定要查找的数据类型;如果是 DATE,则输入“d”,如果是 DATETIME,则输入“dt”


推荐阅读