Фильтровать данные по минутам в SAS (PROC SQL) - Использование времени в предложении WHERE? - PullRequest
0 голосов
/ 31 мая 2018

Попытка получить все записи, на которые был дан ответ на телефонный звонок менее чем за 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.

Есть ли простой способ отфильтровать мои данные по минутам и секундам?

Спасибо!

1 Ответ

0 голосов
/ 31 мая 2018

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

...