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') |  |