Utilizar formatos de fecha históricamente ha sido un desafío, en especial para los usuarios que vienen de utilizar otros lenguajes o herramientas o aplicaciones.
En este Tip vamos a develar un aspecto no muy conocido de los formatos de fecha. Esperamos que les sea de utilidad.
Pueden acceder al listado completo de formatos de SAS en:
https://documentation.sas.com/doc/es/pgmsascdc/9.4_3.5/allprodsle/syntaxByType-format.htm
/*-------------------*/
/* inicio del código */
/*-------------------*/
/*-------------------------------------------------------*/
/* 1.- Formatos de fecha conocidos (algunos no tanto...) */
/*-------------------------------------------------------*/
/* Para comenzar creamos un conjunto de datos */
/* Recuerden que internamente las fechas son 'días de SAS', es decir números */
/* enteros con el día cero = 01 de Enero de 1960 */
Data fechas;
infile datalines;
input dia;
format dia date9.; /*usamos un formato de fecha*/
cards;
22347
0
1
-366
21905
22905
22805
;
Run;
/* Ahora sí, utilizamos formatos */
Data fechas_formatos (drop=i);
set fechas;
array fecha {8};
do i=1 to 8;
fecha{i}=dia;
end;
format fecha1 mmddyy10. /*formato "mes/día/año"*/
fecha2 monname.
fecha3 downame.
fecha4 weekdate20.
fecha5 e8601DA10. /*formato estandarizado cumpliendo normas ISO*/
fecha6 yyq.
fecha7 qtrr. /*¡el trimestre en números romanos!*/
fecha8 ddmmyy10. /*formato "día/mes/año"*/
;
run;
Uno de los serios inconvenientes de algunos de los formatos que presentamos arriba es que escriben "en inglés".
Tal vez... tal vez... no conocen los formatos que escriben ¡"en español"!
Para utilizarlos nos valdremos de una de las tantas opciones de SAS, la opción: 'locale'.
/*--------------------------------------------------*/
/* 2.- Formatos de fecha casi casi desconocidos */
/*--------------------------------------------------*/
/* ¡Cambiamos a formatos locales! */
options locale=es_AR; /*utilizamos, por ejemplo, formatos de Argentina*/
/* Los formatos de fecha aparecen escritos ¡en español! */
Data fechas_formatos_local (drop=i);
set fechas;
array fecha {10};
do i=1 to 10;
fecha{i}=dia;
end;
format fecha1 nldatewn.
fecha2 nldateym.
fecha3 nldatemd.
fecha4 nldateyql6.
fecha5 nldateyql7.
fecha6 nldateyq30.
fecha7 nldateyw32.
fecha8 nldatmdt40.
fecha9 nldateymm20.
fecha10 nldatew30.
;
run;
/*-------------------*/
/* fin del código */
/*-------------------*/
Pueden ver la lista completa de códigos de países que se pueden utilizar con 'locale' en:
https://documentation.sas.com/doc/es/pgmsascdc/9.4_3.5/nlsref/p0yctvkmmbdwl2n1k87qd1nv1nu3.htm
Hay muchos formatos locales. Pueden ver todos los que comienzan con 'nl' (National Language)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.