2016-03-29 18 views
0

Ich bin sehr neu zu SAS, und ich versuche, dieses Stück Code zu modifizierenSAS Datum Betrieb innerhalb proc sql

proc sql; 
select a, Current_Date - 2 - b as some_date 
from table 

CURRENT_DATE eine Funktion in sas ist. Ich versuche, es durch mein eigenes Datum zu ersetzen. a und b sind Spaltennamen in einer Datenbank, zu der ich mich verbinde. Ich habe versucht, Current_Date auf "12nov2013" zu ändern, aber es scheint nicht zu funktionieren.

Ich habe versucht:

1.

%let startFrom = '12nov2013'd; 
proc sql; 
    select a, &startFrom - 2 - b as some_date 
from table 

dies nicht funktioniert.

2.

proc sql; 
    select a, input('12nov2013',date9.) - 2 - b as some_date 
from table 

Diese nicht

funktioniert Wie soll Ii in SAS dieses Datum Betrieb tun

3.

proc sql; 
    select a, intck('DAY','19nov2015'd,rqo_tran_date_alt) as TranMonth 
from table 

dies auch nicht funktioniert

+0

Was bedeutet "nicht funktioniert"? Gibt es einen Fehler? Gibt falsche Antwort? Welche Antwort? Wäre hilfreich, Beispiel-Eingabe-Dataset und Beispiel-Ergebnisse/gewünschte Ergebnisse bereitzustellen. – Joe

Antwort

1

Mit deinem ersten Beispiel stimmt nichts wirklich, obwohl es verbessert werden könnte.

%let startFrom = '12nov2013'd; 

data have; 
    input a $ b; 
    datalines; 
Zero 0 
Five 5 
Ten 10 
Hundred 100 
;;;; 
run; 


proc sql; 
    select a, &startFrom - 2 - b as some_date format=date9. 
    from have; 
quit; 

Hinzufügen des Formats ist in der Regel ziemlich hilfreich, obwohl nicht erforderlich. Dies setzt voraus, b ist eine numerische Variable, die eine Anzahl der Tage enthält. Wenn es etwas anderes oder einen Charakter enthält, gibt dies nicht unbedingt das richtige Ergebnis.