在 SAS (PROC SQL) 中按分钟过滤数据 - 在 WHERE 子句中使用时间?

Filter data by minutes in SAS (PROC SQL) - Using time in WHERE clause?

正在尝试提取所有 phone 呼叫在 1 分钟内得到应答的记录。

我的数据集 p1 看起来有点像这样

Call_date  pick_up
05/30/2018 0:19
05/29/2018 1:45
05/29/2018 0:37
05/28/2018 1:01

这是在 SAS 中。当我 运行 PROC CONTENTS 时,我得到的 pick_up 列的信息是 TIME20.3

所以我尝试运行这个代码:

PROC SQL;
SELECT p1.call_date,p1.pick_up
FROM p1

WHERE p1.pick_up < 1:00time20.3;

QUIT;

我收到以下错误:

ERROR 22-322: Syntax error, expecting one of the following: ;, !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, EQT, EXCEPT, 
           GE, GET, GROUP, GT, GTT, HAVING, INTERSECT, LE, LET, LT, LTT, NE, NET, NOT, OR, ORDER, OUTER, UNION, ^, ^=, |, ||, ~, 
           ~=.  

ERROR 76-322: Syntax error, statement will be ignored.

有没有一种简单的方法可以按分钟和秒过滤我的数据?

谢谢!

SAS 以秒为单位存储时间,因此您可以执行以下操作。

WHERE p1.pick_up < 60;

您还可以按如下方式指定时间文字:

WHERE p1.pick_up < '01:00't;

格式控制变量的外观,但不改变底层变量。

您可以在此处找到有关 SAS 日期和时间的教程: https://communities.sas.com/t5/SAS-Communities-Library/Working-with-Dates-and-Times-in-SAS-Tutorial/ta-p/424354