SAS 9.3 DATETIME VARIABLE FORMAT AS DATE

后端 未结 8 1524
误落风尘
误落风尘 2020-12-18 16:36

I have a datetime22.3 variable which I would like to display as date.

for eg I want to display 17JUL2006:00:00:00.000 as 07/17/2006

How do I do this?

相关标签:
8条回答
  • 2020-12-18 17:02

    If you want to display the variable's contents as a date (without changing the underlying value), use a FORMAT statement.

    proc print;
        format dte mmddyys10.;
    run;
    
    proc means;
        class dte;
        format dte mmddyys10.;
    run;
    

    etc. Note that you can also put the FORMAT in a data step, in which case any uses of the variable will automatically pick it up.

    data foo;
        format dte mmddyys10.;
    run;
    
    0 讨论(0)
  • 2020-12-18 17:04

    use the same princpiple in a data step

    data _null_;
       a='17JUL2006:00:00:00.000'd;
       put a;
       put 'formatted date='a MMDDYY10.;
    run;
    

    This is the output from my SAS 9.3

    44   data _null_;
    45   a = '17JUL2006:00:00:00:000'D;
    46   put a;
    47   put 'formatted ' a MMDDYY10.;
    48   run;
    
    16999
    formatted 07/17/2006
    NOTE: DATA statement used (Total process time):
          real time           0.00 seconds
          cpu time            0.00 seconds
    
    0 讨论(0)
  • 2020-12-18 17:07

    You can't apply a standard date format directly against a datetime value, although there are some date formats you can prefix with 'DT' which will display a datetime as a date. Unfortunately the MMDDYY format is not one of these, however you could use DTDATE9. which would format your datetime as '17JUL2006'.

    Another option is create your own format using the PICTURE statement, the example below will display the datetime as required.

    proc format;
    picture dtfmt low-high='%0m/%0d/%Y' (datatype=datetime);
    run;
    
    data want;
    dt_val='17JUL2006:00:00:00.000'dt;
    format dt_val dtfmt.;
    run;
    
    0 讨论(0)
  • 2020-12-18 17:10

    Converts date/time var to char date var:

    BLEndDatex = put(datepart(BLEndDateTime),yymmdd10.);
    

    Create numeric sas date without time:

    BLEndDate = mdy(SUBSTR(BLEndDatex,6,2),SUBSTR(BLEndDatex,9,2),SUBSTR(BLEndDatex,1,4));
    

    Thanks to Rizier123 & Heemin posting above to the first portion.

    0 讨论(0)
  • 2020-12-18 17:14

    My answer from a duplicate question:

    You need to convert original SAS DATETIME value (think of it as data type) to SAS DATE value using DATEPART() function and apply appropriate format:

    proc sql; 
     create table work.abc2
     as select *, DATEPART(a.Billing_Dt) format ddmmyy10. as Bill_date
    from abc;
    quit;
    

    So the point is, as Keith pointed above, to apply appropriate type of format (e.g. ddmmyy10. is the SAS Date format) to appropriate values = variable content (e.g. (unformatted) 10 is 11th January 1960 if used as date, while it's 01JAN60:00:00:10 if used as Datetime value), so you have to be sure what your values represent and convert the values if needed.

    0 讨论(0)
  • 2020-12-18 17:15
    put(datepart(datetimevariable),yymmdd10.)
    
    0 讨论(0)
提交回复
热议问题