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'