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