SAS - Data i godziny

Daty IN SAS to szczególny przypadek wartości liczbowych. Każdemu dniu przypisywana jest określona wartość liczbowa, począwszy od 1 stycznia 1960 r. Dacie tej przypisywana jest wartość 0, a data następna ma wartość 1 i tak dalej. Poprzednie dni do tej daty są reprezentowane przez -1, -2 i tak dalej. Dzięki temu podejściu SAS może reprezentować dowolną datę w przyszłości i dowolną datę w przeszłości.

Kiedy SAS odczytuje dane ze źródła, konwertuje odczytane dane na określony format daty, jak określono w formacie daty. Zmienna do przechowywania wartości daty jest zadeklarowana z wymaganymi odpowiednimi informacjami. Data wyjściowa jest wyświetlana przy użyciu formatów danych wyjściowych.

SAS Date Informat

Dane źródłowe można poprawnie odczytać przy użyciu określonych informacji o dacie, jak pokazano poniżej. Cyfra na końcu informacji wskazuje minimalną szerokość ciągu daty, który ma być odczytany w całości przy użyciu informatu. Mniejsza szerokość da nieprawidłowy wynik. W przypadku SAS V9 istnieje ogólny format datyanydtdte15. który może przetwarzać dowolne dane wejściowe.

Data wprowadzenia Szerokość daty Informat
03.11.2014 10 mmddyy10.
11.03.14 8 mmddyy8.
11 grudnia 2012 20 worddate20.
14mar2011 9 data9.
14-mar-2011 11 data11.
14-mar-2011 15 anydtdte15.

Przykład

Poniższy kod przedstawia odczyt różnych formatów dat. Należy pamiętać, że wszystkie wartości wyjściowe są tylko liczbami, ponieważ nie zastosowaliśmy żadnych instrukcji formatu do wartości wyjściowych.

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;

Po wykonaniu powyższego kodu otrzymujemy następujące dane wyjściowe.

Format wyjściowy daty SAS

Daty po odczytaniu można przekonwertować na inny format zgodnie z wymaganiami wyświetlacza. Osiąga się to za pomocą instrukcji formatu dla typów dat. Mają taki sam format jak informacje.

Przykład

W poniższym przykładzie data jest odczytywana w jednym formacie, ale wyświetlana w innym formacie.

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;

Po wykonaniu powyższego kodu otrzymujemy następujące dane wyjściowe.