Funciones de Formato

NotaAuthor
 

Written by Karel Zak on 2000-01-24.

Las funciones de formato proveen un poderoso conjunto de herramientas para convertir varios datetypes (date/time, int, float, numeric) a texto formateado y convertir de texto formateado a su datetypes original.

Tabla 6. Funciones de Formato

FuncionesRetornaDescripcionEjemplo
to_char(datetime, text) text convierte datetime a string to_char('now'::datetime, 'HH12:MI:SS')
to_char(timestamp, text) text convierte timestamp a string to_char( now(), 'HH12:MI:SS')
to_char(int, text) text convierte int4/int8 a string to_char(125, '999')
to_char(float, text) text convierte float4/float8 a string to_char(125.8, '999D9')
to_char(numeric, text) text convierte numeric a string to_char(-125.8, '999D99S')
to_datetime(text, text) datetime convierte string a datetime to_datetime('05 Dec 2000 13', 'DD Mon YYYY HH')
to_date(text, text) date convierte string a date to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) date convierte string a timestamp to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_number(text, text) numeric convierte string a numeric to_number('12,454.8-', '99G999D9S')

Para todas las funciones de formato, el segundo argumento es format-picture.

Tabla 7. Format-pictures para date/time to_char() versi�n.

Format-pictureDescripci�n
HH hora del d�a(01-12)
HH12 hora del d�a(01-12)
MI minuto (00-59)
SS segundos (00-59)
SSSS segundos pasados la medianoche(0-86399)
Y,YYY a�o(4 o mas d�gitos) con coma
YYYY a�o(4 o mas d�gitos)
YYY �ltimos 3 d�gitos del a�o
YY �ltimos 2 d�gitos del a�o
Y �ltimo d�gito del a�o
MONTH nombre completo del mes(9-letras) - todos los caracteres en may�sculas
Month nombre completo del mes(9-letras) - el primer car�cter en may�sculas
month nombre completo del mes(9-letras) - todos los caracteres en min�sculas
MON nombre abreviado del mes(3-letras) -todos los caracteres en may�sculas
Mon nombre abreviado del mes(3-letras) - el primer car�cter en may�sculas
mon nombre abreviado del mes(3-letras) - todos los caracteres en min�sculas
MM mes (01-12)
DAY nombre completo del d�a(9-letters) - todos los caracteres en may�sculas
Day nombre completo del d�a(9-letters) - el primer car�cter en may�sculas
day nombre completo del d�a(9-letters) - todos los caracteres en min�sculas
DY nombre abreviado del d�a(3-letters) - todos los caracteres en may�sculas
Dy nombre abreviado del d�a(3-letters) - el primer car�cter en may�sculas
dy nombre abreviado del d�a(3-letters) - todos los caracteres en min�sculas
DDD d�a del a�o(001-366)
DD d�a del mes(01-31)
D d�a de la semana(1-7; SUN=1)
W semana del mes
WW n�mero de la semana en el a�o
CC centuria (2-digits)
J d�a juliano(dias desde Enero 1, 4712 BC)
Q quarter
RM mes en n�meral romano(I-XII; I=ENE)

Todos los format-pictures permiten usar sufijos (postfix / prefix). El sufijo es valido para una near format-picture. El 'FX' es solo prefijo global.

Tabla 8. Suffixes para format-pictures para date/time to_char() version.

SufijoDescripci�nEjemplo
FM modo rellenado- prefix FMMonth
TH numero ordinal superior - postfix DDTH
th numero ordinal inferior - postfix DDTH
FX FX - (Fixed format) conmutador global de format-picture . The TO_DATETIME / TO_DATE salta los espacios en blanco si esta opci�n no es usada. Debe ser usada como primer item en formt-picture. FX Month DD Day
SP spell mode (not implement now) DDSP

'\' - debe ser usado como doble \\, ejemplo '\\HH\\MI\\SS'

'"' - el texto entre comillas es saltado y no retocado. Si quieres escribir ' " ' a la salida debes usar \\", ejemplo ' \\"YYYY Month\\" '. .

text - el to_char()de PostgreSQL soporta texto sin '"', pero el texto entre las comillas es mas r�pido y tienes la seguridad que el texto no ser� interpretado como keyword (format-picture), ejemplo '"Hello Year: "YYYY'. .

Tabla 9. Format-pictures para number (int/float/numeric) to_char() version.

Format-pictureDescripci�n
9 valor retornado con el n�mero especificado de d�gitos y si no estan disponibles usa espacios en blanco
0 como 9, pero en lugar de espacios en blanco usa ceros
. (period) punto decimal
, (comma) separador de grupo (miles)
PR retorna el valor negativo en angle brackets
S retorna el valor negativo con el signo menos (usa locales)
L s�mbolo monetario (usa locales)
D punto decimal (usa locales)
G separador de grupos (usa locales)
MI retorna el signo menos en la posici�n especificada (si n�mero < 0)
PL retorna el signo mas en la posici�n especificada (si n�mero > 0) - PostgreSQL extension
SG retorna el signo mas/menos en la posici�n especificada - PostgreSQL extension
RN retorna el n�mero como n�mero romano(n�mero debe ser entre1 y 3999)
TH or th convierte el n�mero a n�mero ordinal (no convertir n�meros menores que cero y n�meros decimales) - PostgreSQL extension
V arg1 * (10 ^ n); - retorna un valor multiplicado por 10^n (donde 'n' es n�mero de '9's despues de 'V'). El to_char() no soporta el uso de 'V' y punto decimal juntos, ejemplo "99.9V99".
EEEE numeros cientificos . ahora no soportados.

Note: Un signo formateado via 'SG', 'PL' o 'MI' is not anchor in number; to_char(-12, 'S9999') produce:

 '  -12' 
, but to_char(-12, 'MI9999') produce:
 '-  12' 
. Oracle no permite usar 'MI' delante de '9', en Oracle tiene que ser siempre despues de '9'.

Tabla 10. El to_char() en ejemplos.

InputOutput
to_char(now(), 'Day, HH12:MI:SS')
 'Tuesday  , 05:39:18' 
to_char(now(), 'FMDay, HH12:MI:SS')
 'Tuesday, 05:39:18' 
to_char( -0.1, '99.99')
 ' -.10' 
to_char( -0.1, 'FM9.99')
 '-.1' 
to_char( 0.1, '0.9')
 ' 0.1' 
to_char( 12, '9990999.9')
 '    0012.0' 
to_char( 12, 'FM9990999.9')
 '0012' 
to_char( 485, '999')
 ' 485' 
to_char( -485, '999')
 '-485' 
to_char( 485, '9 9 9')
 ' 4 8 5' 
to_char( 1485, '9,999')
 ' 1,485' 
to_char( 1485, '9G999')
 ' 1 485' 
to_char( 148.5, '999.999')
 ' 148.500' 
to_char( 148.5, '999D999')
 ' 148,500' 
to_char( 3148.5,'9G999D999')
 ' 3 148,500' 
to_char( -485, '999S')
 '485-'	
to_char( -485, '999MI')
 '485-'	
to_char( 485, '999MI')
 '485' 
to_char( 485, 'PL999')
 '+485'	
to_char( 485, 'SG999')
 '+485'	
to_char( -485, 'SG999')
 '-485'	
to_char( -485, '9SG99')
 '4-85'	
to_char( -485, '999PR')
 '<485>' 
to_char( 485, 'L999')
 'DM 485' 
to_char( 485, 'RN')
 '        CDLXXXV' 
to_char( 485, 'FMRN')
 'CDLXXXV' 
to_char( 5.2, 'FMRN')
 'V' 
to_char( 482, '999th')
 ' 482nd' 
to_char( 485, '"Good number:"999')
 'Good number: 485' 
to_char( 485.8, '"Pre-decimal:"999" Post-decimal:" .999')
 'Pre-decimal: 485 Post-decimal: .800' 
to_char( 12, '99V999')
 ' 12000' 
to_char( 12.4, '99V999')
 ' 12400' 
to_char( 12.45, '99V9')
 ' 125'