Tema SQL
FORMAT() (SQL Server)
Formatea fechas y números a cadena según patrón .NET (códigos tipo d fecha corta, N número). Conveniente para informes; costoso en grandes volúmenes frente a CONVERT estilo.
Descripción
FORMAT(valor, formato [, cultura]) usa CLR; puede ser más lento que CONVERT/VARCHAR. Para fechas, cultura afecta orden día/mes. No uses FORMAT en predicados indexados: impide uso de índice. Para exportaciones masivas considera formateo en aplicación. MySQL DATE_FORMAT; PostgreSQL to_char.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
FORMAT(expresión, formato [, cultura])
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Rendimiento
- Evitar en SELECT masivos sin necesidad.
- Cultura
- es-ES vs en-US cambia separadores.
Ejemplos
Ejemplo 1
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm', 'es-ES') AS legible;
SELECT FORMAT(1234567.89, 'N2', 'es-ES') AS importe;
Ejemplo 2
SELECT FORMAT(SYSDATETIME(), N'yyyy-MM-dd HH:mm:ss.fff', 'es-ES') AS ts;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.