过滤日期的公式

时间:2019-03-25 16:11:53

标签: sas proc

我在使用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给出日志:

  

错误:值'’'不是有效的SAS名称。警告:明显   宏的调用未解决。 45在哪里   t1.ifrs_stage_at_start NOT = t1.ifrs_stage_PROV AND   t1.ifrs_stage_date_at_start =‘31DEC2017%’,                                                                                                                        _                                                                                                                        76错误22-322:语法错误,预期下列其中一项:;,!,   !!,&,(,*,**,+,-,'。',/,<,<=,<>,=,>,> =,AND,EQ,EQT,                 除,GE,GET,GROUP,GT,GTT,HAVING,INTERSECT,LE,LET,LT,LTT,NE,NET,NET,NOT,OR,ORDER,OUTER,UNION,^,^ =,                 |,||,〜,〜=。

2 个答案:

答案 0 :(得分:0)

尝试一下:

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”

答案 1 :(得分:0)

如果要按DATETIME值所代表的日期来过滤它们,可以将其转换为DATE值。

app/views/things/new.html.erb

或转换为特定的DATETIME值

WHERE datepart(t1.ifrs_stage_date_at_start) = '31DEC2017’d

使用DATETIME值范围

WHERE intnx('dtday',t1.ifrs_stage_date_at_start,0) = '31DEC2017:00:00’dt 

或者可能转换为字符串

WHERE t1.ifrs_stage_date_at_start between '31DEC2017:00:00’dt and '01JAN2018:00:00’dt