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
Funciones | Retorna | Descripcion | Ejemplo |
---|
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-picture | Descripció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.
Sufijo | Descripción | Ejemplo |
---|
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-picture | Descripció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:
,
but to_char(-12, 'MI9999') produce:
.
Oracle no permite usar 'MI' delante de '9', en Oracle tiene que ser siempre despues de '9'.
Tabla 10. El to_char() en ejemplos.
Input | Output |
---|
to_char(now(), 'Day, HH12:MI:SS') | |
to_char(now(), 'FMDay, HH12:MI:SS') | |
to_char( -0.1, '99.99') | |
to_char( -0.1, 'FM9.99') | |
to_char( 0.1, '0.9') | |
to_char( 12, '9990999.9') | |
to_char( 12, 'FM9990999.9') | |
to_char( 485, '999') | |
to_char( -485, '999') | |
to_char( 485, '9 9 9') | |
to_char( 1485, '9,999') | |
to_char( 1485, '9G999') | |
to_char( 148.5, '999.999') | |
to_char( 148.5, '999D999') | |
to_char( 3148.5,'9G999D999') | |
to_char( -485, '999S') | |
to_char( -485, '999MI') | |
to_char( 485, '999MI') | |
to_char( 485, 'PL999') | |
to_char( 485, 'SG999') | |
to_char( -485, 'SG999') | |
to_char( -485, '9SG99') | |
to_char( -485, '999PR') | |
to_char( 485, 'L999') | |
to_char( 485, 'RN') | |
to_char( 485, 'FMRN') | |
to_char( 5.2, 'FMRN') | |
to_char( 482, '999th') | |
to_char( 485, '"Good number:"999') | |
to_char( 485.8, '"Pre-decimal:"999" Post-decimal:" .999') | 'Pre-decimal: 485 Post-decimal: .800' |
|
to_char( 12, '99V999') | |
to_char( 12.4, '99V999') | |
to_char( 12.45, '99V9') | |