Este script explora las funcionalidades avanzadas del procedimiento PROC FORMAT con la instrucción PICTURE. Muestra cómo usar directivas tipo strftime (ej: %Y, %m) para formatear valores datetime. Incluye ejemplos para el formato estándar, la gestión de redondeos, el uso de 'datetime_util' para representar la medianoche como 24:00:00, y el formato de duraciones (intervalos).
Análisis de datos
Type : CREATION_INTERNE
Todos los datos se generan dinámicamente en pasos DATA _NULL_ utilizando literales datetime.
1 Bloque de código
PROC FORMAT
Explicación : Creación de un formato de imagen 'dbdate' para mostrar un valor datetime en el formato estándar YYYY-MM-DD:HH:MM:SS.
¡Copiado!
title1 '12.2.1 Picture Formats';
title2 'Using Date Directives';
proc format;
picture dbdate
other = '%Y-%0m-%0d:%0H:%0M:%0S' (datatype=datetime);
run;
1
title1 '12.2.1 Picture Formats';
2
title2 'Using Date Directives';
3
PROC FORMAT;
4
picture dbdate
5
other = '%Y-%0m-%0d:%0H:%0M:%0S' (datatype=datetime);
6
RUN;
2 Bloque de código
DATA STEP Data
Explicación : Aplicación del formato 'dbdate' en un paso Data _NULL_ y a través de una variable macro con %sysfunc.
¡Copiado!
data _null_;
now = '11sep2010:15:05:27'dt;
put now=;
put now= dbdate.;
call symputx('selldate',now);
run;
%put %sysfunc(putn(&selldate,dbdate.));
1
DATA _null_;
2
now = '11sep2010:15:05:27'dt;
3
put now=;
4
put now= dbdate.;
5
call symputx('selldate',now);
6
RUN;
7
8
%put %sysfunc(putn(&selldate,dbdate.));
3 Bloque de código
PROC FORMAT
Explicación : Definición de formatos para mostrar el nombre completo (%B) o abreviado (%b) del mes a partir de un valor datetime.
¡Copiado!
proc format;
picture monthname
other = '%B ' (datatype=datetime);
picture monthabb
other = '%b ' (datatype=datetime);
run;
1
PROC FORMAT;
2
picture monthname
3
other = '%B ' (datatype=datetime);
4
picture monthabb
5
other = '%b ' (datatype=datetime);
6
RUN;
4 Bloque de código
DATA STEP Data
Explicación : Prueba de la visualización de los nombres de los meses formateados.
¡Copiado!
data _null_;
now = '11sep2010:15:05:27'dt;;
put now=;
put now= monthname.;
put now= monthname3.;
put now= monthabb.;
run;
1
DATA _null_;
2
now = '11sep2010:15:05:27'dt;;
3
put now=;
4
put now= monthname.;
5
put now= monthname3.;
6
put now= monthabb.;
7
RUN;
5 Bloque de código
PROC FORMAT
Explicación : Creación de un formato con la opción (round) para gestionar el redondeo de los segundos al mostrarse.
low - high = '%0d%b%0Y:%0H:%0M:%0S'(datatype=datetime)
4
;
5
RUN;
6 Bloque de código
DATA STEP Data
Explicación : Demostración del efecto del redondeo en valores datetime cercanos al segundo o al día siguiente.
¡Copiado!
data _null_;
datetime = '01apr2011:12:34:56.7'dt;
put datetime=myDayT.;
datetime = '01apr2011:23:59:59.7'dt;
put datetime=myDayT.;
run;
1
DATA _null_;
2
datetime = '01apr2011:12:34:56.7'dt;
3
put datetime=myDayT.;
4
datetime = '01apr2011:23:59:59.7'dt;
5
put datetime=myDayT.;
6
RUN;
7 Bloque de código
PROC FORMAT
Explicación : Uso de datatype=datetime_util para permitir la visualización de la medianoche como '24:00:00' en lugar de '00:00:00' del día siguiente, útil en la industria de servicios públicos.
other='%n days %H hours %M minutes' (datatype=time);
4
RUN;
10 Bloque de código
DATA STEP Data
Explicación : Cálculo de una diferencia entre dos datetimes y visualización del resultado como duración (días, horas, minutos).
¡Copiado!
data _null_;
start = '01jan2010:12:34'dt;
end = '01feb2010:18:36'dt;
diff = end - start;
put diff=durtest.;
run;
1
DATA _null_;
2
start = '01jan2010:12:34'dt;
3
END = '01feb2010:18:36'dt;
4
diff = END - start;
5
put diff=durtest.;
6
RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.