Consejos y trucos

BookmarkSubscribeRSS Feed
Tip Semanal 030: Escribir formatos de fecha
Berenice25
SAS Employee

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)

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

Article Labels
Article Tags
Contributors