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)

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand in the Innovate Hub.

Watch Now →
Article Labels
Article Tags
Contributors