Publicado el :
Data Management CREATION_INTERNE

Formatos de imagen (Picture Formats) y directivas de fecha

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
1title1 '12.2.1 Picture Formats';
2title2 'Using Date Directives';
3PROC 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!
1DATA _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!
1PROC 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!
1DATA _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.
¡Copiado!
1PROC FORMAT;
2 picture myDayT (round)
3 low - high = '%0d%b%0Y:%0H:%0M:%0S'(datatype=datetime)
4 ;
5RUN;
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!
1DATA _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.
¡Copiado!
1PROC FORMAT;
2 picture abc (default=19)
3 other='%Y-%0m-%0d %0H:%0M:%0S' (datatype=datetime_util);
4 RUN;
8 Bloque de código
DATA STEP Data
Explicación :
Comparación de la visualización para la medianoche en punto y un segundo después de la medianoche con el formato especial.
¡Copiado!
1DATA _null_;
2 x = '01nov2008:00:00:00'dt; put x=abc.;
3 x = '01nov2008:00:00:01'dt; put x=abc.;
4 RUN;
9 Bloque de código
PROC FORMAT
Explicación :
Formateo de una duración (diferencia entre dos fechas) usando la directiva %n para contar el número total de días.
¡Copiado!
1PROC FORMAT;
2 picture durtest(default=27)
3 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!
1DATA _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.