SAS - Дата и время

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

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

Информация о дате SAS

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

Дата ввода Ширина даты Информат
11.03.2014 10 mmddyy10.
11.03.14 8 mmddyy8.
11 декабря 2012 г. 20 worddate20.
14мар2011 9 дата9.
14-мар-2011 11 дата11.
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;

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

Формат вывода даты 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;

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