Formatando datas para relatórios

Análise de Séries Temporais no SQL Server

Maham Faisal Khan

Senior Data Science Content Developer

Funções de formatação

CAST()

CONVERT()

FORMAT()

Análise de Séries Temporais no SQL Server

A função CAST()

  • Suportada pelo menos desde o SQL Server 2000
  • Converte um tipo de dado em outro, inclusive tipos de data
  • Sem controle de formatação ao converter datas para strings
  • Padrão ANSI SQL; a maioria dos bancos relacionais e não relacionais tem essa função
Análise de Séries Temporais no SQL Server

Usando a função 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álise de Séries Temporais no SQL Server

A função CONVERT()

  • Suportada pelo menos desde o SQL Server 2000
  • Útil para converter um tipo de dado em outro, inclusive tipos de data
  • Algum controle de formatação ao converter datas para strings usando o parâmetro style
  • Específica de T-SQL
Análise de Séries Temporais no SQL Server

Usando a função 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álise de Séries Temporais no SQL Server

Exemplos de estilos do CONVERT()

Código do 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ão d.m.a
  • Japonês a/m/d
  • Padrão ISO yyyymmdd
  • Padrão ODBC (121 para ms)
  • ISO8601 yyyy-mm-dd hh:mi:ss.mmm
  • yyyy-mm-ddThh:mi:ss.mmmZ
Análise de Séries Temporais no SQL Server

A função FORMAT()

  • Suportada desde o SQL Server 2012
  • Útil para formatar data ou número de um jeito específico para relatórios
  • Muito mais flexível para formatar datas como strings do que CAST() ou CONVERT()
  • Específica de T-SQL
  • Usa o .NET Framework para conversão
  • Pode ser mais lenta ao processar muitas linhas
Análise de Séries Temporais no SQL Server

Usando a função 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álise de Séries Temporais no SQL Server

A função FORMAT() pode ser mais lenta que CAST() ou CONVERT() ao lidar com conjuntos de dados maiores.

Análise de Séries Temporais no SQL Server

Vamos praticar!

Análise de Séries Temporais no SQL Server

Preparing Video For Download...