martes, 1 de abril de 2014

Macros transformación fechas SAS (I)

Dado que es habitual la necesidad de manipular fechas en SAS y pasar de un formato a otro, mostramos a continuación un par de macros que pueden ser de utilidad para trabajar de forma sencilla con fechas. Estas macros transforman formatos habituales como numérico yyyymmdd a formato fecha y viceversa.

/*
  Convierte un date a un numérico que representa una fecha en formato YYYYMMDD
*/

%macro date_to_num_yyyymmdd (var);
/* Como parámetro recibe una variable con formato fecha */
/* Devuelve un valor numérico con formato yyyymmdd */
%global fecha;
%let fecha = INPUT(PUT(&var,yymmddn8.),8.);
&fecha
%mend;

/* Ejemplo de uso */

data fechas1;
fecha_date = date();
fecha_num = %date_to_num_yyyymmdd (fecha_date);
run;



/*
     Convierte un numérico que representa una fecha en formato YYYYMMDD a un date
*/

%macro num_yyyymmdd_to_date(var);
/* Como parámetro recibe variable un numérico que representa una fecha en formato yyyymmdd */
/* Devuelve un date */
%global fecha;
%let fecha = mdy(int((&var - int(&var / 10000) * 10000) / 100),
int(&var - (int(&var/100)*100)),int(&var/ 10000));
&fecha
%mend;

/* Ejemplo de uso */

data fechas2;
length fecha_num 8.;
fecha_num = 20140401;
fecha_date = %num_yyyymmdd_to_date (fecha_num);
run;

No hay comentarios:

Publicar un comentario