Volver a la página principal
viernes 27 septiembre 2024
402

Cómo formatear valores con FORMAT en SQL Server

¿Qué es FORMAT y para qué se usa?

FORMAT es una función de formato que permite transformar valores de tipo numérico, fecha y hora en cadenas de texto con un formato específico. Esta función usa la sintaxis de formato de .NET, lo que proporciona una amplia variedad de opciones para personalizar la salida según los requisitos de presentación. FORMAT es especialmente útil para generar reportes, mostrar datos en aplicaciones y trabajar con diferentes convenciones regionales o culturales.

Se utiliza en escenarios como:

  • Mostrar fechas en distintos formatos (por ejemplo, dd-MM-yyyy).
  • Formatear números con separadores de miles y decimales.
  • Convertir números a valores de moneda.
  • Personalizar la salida de horas y fechas para usuarios de diferentes regiones.

Sintaxis de FORMAT

FORMAT ( value, format [, culture ] )
  • value: El valor que se desea formatear (puede ser numérico, de fecha o de hora).
  • format: Una cadena de formato que define cómo se presentará el valor (N2, yyyy-MM-dd, C, etc.).
  • culture: (Opcional) El nombre de la cultura que se utilizará para el formato (por ejemplo, en-US para inglés de EE. UU., es-ES para español de España). Si no se especifica, se utiliza la configuración regional predeterminada del servidor.

Ejemplos de uso de FORMAT

Formatear un número con separadores de miles y decimales

SELECT FORMAT(1234567.89, 'N2') AS FormatoNumero;

Resultado:

FormatoNumero
--------------
1,234,567.89

En este ejemplo, N2 indica que el número debe tener separadores de miles y 2 decimales (, para separar miles y . para decimales, según la configuración predeterminada).

Mostrar un número como moneda

SELECT FORMAT(1500, 'C', 'es-ES') AS FormatoMoneda;

Resultado:

FormatoMoneda
--------------
1.500,00 €

Aquí, C es el formato de moneda, y es-ES indica el uso de la cultura española, que presenta la moneda en euros y usa . como separador de miles y , como separador decimal.

Formatear una fecha en un formato personalizado

SELECT FORMAT(GETDATE(), 'dd-MM-yyyy') AS FechaFormateada;

Resultado:

FechaFormateada
----------------
27-09-2024

dd-MM-yyyy especifica que la fecha debe mostrarse con el día (dd), mes (MM) y año (yyyy), separados por guiones (-).

Formatear fechas en diferentes culturas

SELECT FORMAT(GETDATE(), 'D', 'fr-FR') AS FechaFrancia,
       FORMAT(GETDATE(), 'D', 'en-US') AS FechaEEUU;

Resultado:

FechaFrancia                  | FechaEEUU
------------------------------|---------------------------
27 septembre 2024             | Saturday, September 27, 2024

La salida de la fecha depende del culture especificado. fr-FR usa el formato de fecha en francés, y en-US usa el formato estándar de Estados Unidos.

Formatear la hora en formato de 12 y 24 horas

SELECT FORMAT(GETDATE(), 'hh:mm tt') AS Hora12Horas,
       FORMAT(GETDATE(), 'HH:mm') AS Hora24Horas;

Resultado:

Hora12Horas | Hora24Horas
------------|------------
02:30 PM    | 14:30
  • hh:mm tt: Muestra la hora en formato de 12 horas (hh) con indicador AM/PM (tt).
  • HH:mm: Muestra la hora en formato de 24 horas (HH).

Formatear un número a porcentaje

SELECT FORMAT(0.875, 'P2') AS Porcentaje;

Resultado:

Porcentaje
-----------
87.50 %

P2 convierte el número a porcentaje con 2 decimales, mostrando 0.875 como 87.50 %.

Consideraciones importantes

  • La función FORMAT devuelve siempre una cadena de texto, lo que puede afectar el rendimiento en consultas que se ejecutan con frecuencia.
  • Los formatos deben seguir la sintaxis de .NET y no la de SQL estándar, por lo que algunas convenciones de formato pueden diferir.
  • FORMAT es compatible a partir de SQL Server 2012, por lo que no está disponible en versiones anteriores.

Referencia oficial

Para más información sobre FORMAT, consulta la documentación oficial de Microsoft.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer