Dar formato a fechas para informes

Análisis de series temporales en SQL Server

Maham Faisal Khan

Senior Data Science Content Developer

Funciones de formato

CAST()

CONVERT()

FORMAT()

Análisis de series temporales en SQL Server

La función CAST()

  • Disponible al menos desde SQL Server 2000
  • Convierte un tipo de datos en otro, incluidos tipos de fecha
  • Sin control del formato al pasar de fechas a cadenas
  • Estándar ANSI SQL: la tienen la mayoría de bases de datos relacionales y no relacionales
Análisis de series temporales en SQL Server

Usar la función CAST()

DECLARE
    @SomeDate DATETIME2(3) = '1991-06-04 08:00:09',
    @SomeString NVARCHAR(30) = '1991-06-04 08:00:09',
    @OldDateTime DATETIME = '1991-06-04 08:00:09';
SELECT
    CAST(@SomeDate AS NVARCHAR(30)) AS DateToString,
    CAST(@SomeString AS DATETIME2(3)) AS StringToDate,
    CAST(@OldDateTime AS NVARCHAR(30)) AS OldDateToString;
DateToString StringToDate OldDateToString
1991-06-04 08:00:09.000 1991-06-04 08:00:09.000 Jun 4 1991 8:00AM
Análisis de series temporales en SQL Server

La función CONVERT()

  • Disponible al menos desde SQL Server 2000
  • Útil para convertir un tipo de datos en otro, incluidos tipos de fecha
  • Cierto control del formato al pasar de fechas a cadenas con el parámetro de estilo
  • Específica de T-SQL
Análisis de series temporales en SQL Server

Usar la función CONVERT()

DECLARE
    @SomeDate DATETIME2(3) = '1793-02-21 11:13:19.033';
SELECT
    CONVERT(NVARCHAR(30), @SomeDate, 0) AS DefaultForm,
    CONVERT(NVARCHAR(30), @SomeDate, 1) AS US_mdy,
    CONVERT(NVARCHAR(30), @SomeDate, 101) AS US_mdyyyy,
    CONVERT(NVARCHAR(30), @SomeDate, 120) AS ODBC_sec;
GO
DefaultForm US_mdy US_mdyyyy ODBC_sec
Feb 21 1793 11:13 AM 02/21/93 02/21/1793 1793-02-21 11:13:19
Análisis de series temporales en SQL Server

Ejemplos de estilos de CONVERT()

Código de estilo

  • 1 / 101
  • 3 / 103
  • 4 / 104
  • 11 / 111
  • 12 / 112
  • 20 / 120
  • 126
  • 127

Formato

  • Estados Unidos m/d/a
  • Británico/Francés d/m/a
  • Alemán d.m.a
  • Japonés a/m/d
  • Estándar ISO aaaaMMdd
  • Estándar ODBC (121 para ms)
  • ISO8601 aaaa-mm-dd hh:mi:ss.mmm
  • aaaa-mm-ddThh:mi:ss.mmmZ
Análisis de series temporales en SQL Server

La función FORMAT()

  • Disponible desde SQL Server 2012
  • Útil para dar formato a fechas o números para informes
  • Mucha más flexibilidad al formatear fechas como cadenas que CAST() o CONVERT()
  • Específica de T-SQL
  • Usa .NET para la conversión
  • Puede ser más lenta al procesar más filas
Análisis de series temporales en SQL Server

Usar la función FORMAT()

DECLARE
    @SomeDate DATETIME2(3) = '1793-02-21 11:13:19.033';
SELECT
    FORMAT(@SomeDate, 'd', 'en-US') AS US_d,
    FORMAT(@SomeDate, 'd', 'de-DE') AS DE_d,
    FORMAT(@SomeDate, 'D', 'de-DE') AS DE_D,
    FORMAT(@SomeDate, 'yyyy-MM-dd') AS yMd;
US_d DE_d DE_D yMd
2/21/1793 21.02.1793 Donnerstag, 21. February 1793 1793-02-21
Análisis de series temporales en SQL Server

La función FORMAT() puede ser más lenta que CAST() o CONVERT() al trabajar con conjuntos de datos grandes.

Análisis de series temporales en SQL Server

¡Vamos a practicar!

Análisis de series temporales en SQL Server

Preparing Video For Download...