Учебники

SAS — дата и время

IN SAS даты являются частным случаем числовых значений. Каждому дню присваивается определенное числовое значение, начиная с 1 января 1960 года. Этой дате присваивается значение даты 0, а следующей дате присваивается значение даты 1 и т. Д. Предыдущие дни до этой даты представлены -1, -2 и так далее. При таком подходе SAS может представлять любую дату в будущем и любую дату в прошлом.

Когда SAS читает данные из источника, он преобразует прочитанные данные в определенный формат даты, как указано в формате даты. Переменная для хранения значения даты объявляется с необходимой информацией. Дата вывода отображается с использованием форматов выходных данных.

SAS Date Informat

Исходные данные могут быть прочитаны надлежащим образом с использованием определенных данных даты, как показано ниже. Цифра в конце информата указывает минимальную ширину строки даты, которая должна быть полностью прочитана с использованием информата. Меньшая ширина даст неверный результат. в SAS V9 существует общий формат даты anydtdte15. который может обрабатывать любой ввод даты.

Дата ввода Ширина даты Informat
03/11/2014 10 mmddyy10.
03/11/14 8 mmddyy8.
11 декабря 2012 г. 20 worddate20.
14mar2011 9 date9.
14-мар-2011 11 date11.
14-мар-2011 15 anydtdte15.

пример

Код ниже показывает чтение различных форматов даты. Обратите внимание, что все выходные значения являются просто числами, так как мы не применили никакого оператора формата к выходным значениям.

DATA TEMP;
INPUT @1 Date1 date11. @12 Date2 anydtdte15. @23 Date3 mmddyy10.   ;
DATALINES;
02-mar-2012 3/02/2012 3/02/2012
;
PROC PRINT DATA = TEMP;
RUN;

Когда приведенный выше код выполняется, мы получаем следующий вывод.

date_time_1

Формат вывода даты SAS

Даты после прочтения могут быть преобразованы в другой формат в соответствии с требованиями дисплея. Это достигается с помощью оператора формата для типов даты. Они принимают те же форматы, что и информаторы.

пример

В приведенном ниже примере дата читается в одном формате, но отображается в другом формате.

DATA TEMP;
INPUT  @1 DOJ1 mmddyy10. @12 DOJ2 mmddyy10.;
format  DOJ1 date11.  DOJ2 worddate20. ;
DATALINES;
01/12/2012 02/11/1998 
;
PROC PRINT DATA = TEMP;
RUN;

Когда приведенный выше код выполняется, мы получаем следующий вывод.