Mettre en forme les dates pour les rapports

Analyse de séries temporelles dans SQL Server

Maham Faisal Khan

Senior Data Science Content Developer

Fonctions de mise en forme

CAST()

CONVERT()

FORMAT()

Analyse de séries temporelles dans SQL Server

La fonction CAST()

  • Pris en charge au moins depuis SQL Server 2000
  • Convertit un type de données en un autre, y compris les types date
  • Aucun contrôle sur le formatage des dates vers les chaînes
  • Conforme ANSI SQL : la plupart des bases relationnelles et non relationnelles proposent cette fonction
Analyse de séries temporelles dans SQL Server

Utiliser la fonction 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
Analyse de séries temporelles dans SQL Server

La fonction CONVERT()

  • Pris en charge au moins depuis SQL Server 2000
  • Utile pour convertir un type de données en un autre, y compris les types date
  • Un certain contrôle du formatage des dates vers les chaînes via le paramètre style
  • Spécifique à T-SQL
Analyse de séries temporelles dans SQL Server

Utiliser la fonction 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
Analyse de séries temporelles dans SQL Server

Exemples de styles CONVERT()

Code style

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

Format

  • États-Unis m/j/a
  • Britannique/Français j/m/a
  • Allemand j.m.a
  • Japonais a/m/j
  • Norme ISO aaaammjj
  • Norme ODBC (121 pour ms)
  • ISO8601 aaaa-mm-jj hh:mi:ss.mmm
  • aaaa-mm-jjThh:mi:ss.mmmZ
Analyse de séries temporelles dans SQL Server

La fonction FORMAT()

  • Pris en charge depuis SQL Server 2012
  • Utile pour mettre en forme une date ou un nombre pour un rapport
  • Bien plus de souplesse pour formater des dates en chaînes que CAST() ou CONVERT()
  • Spécifique à T-SQL
  • Utilise le framework .NET pour la conversion
  • Peut être plus lent quand le volume de lignes augmente
Analyse de séries temporelles dans SQL Server

Utiliser la fonction 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
Analyse de séries temporelles dans SQL Server

La fonction FORMAT() peut être plus lente que CAST() ou CONVERT() sur de grands jeux de données.

Analyse de séries temporelles dans SQL Server

Passons à la pratique !

Analyse de séries temporelles dans SQL Server

Preparing Video For Download...