SET DATEFORMAT (Transact-SQL)

Définit le classement des parties de date mois, jour et année pour interpréter les chaînes de caractères date, smalldatetime, datetime, datetime2 et datetimeoffset.

Pour obtenir une vue d'ensemble de tous les types de données et fonctions de date et d'heure Transact-SQL, consultez Fonctions de date et d'heure (Transact-SQL). Pour obtenir des informations et des exemples communs aux types de données et fonctions de date et d'heure, consultez Utilisation des données de date et d'heure.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

SET DATEFORMAT { format | @format_var } 

Arguments

  • format | **@**format_var
    Ordre des parties de la date. Les paramètres valides sont mdy, dmy, ymd, ydm, myd et dym. Il peut s'agir du format Unicode ou d'un jeu de caractères codés sur deux octets (DBCS) converti en Unicode. La valeur par défaut pour l'anglais des États-Unis est mdy. Pour connaître le paramètre DATEFORMAT par défaut de toutes les langues prises en charge, consultez sp_helplanguage (Transact-SQL).

Notes

Le paramètre DATEFORMAT ydm n'est pas pris en charge pour les types de données date, datetime2 et datetimeoffset.

L'effet du paramètre DATEFORMAT sur l'interprétation des chaînes de caractères peut être différent pour les valeurs datetime et smalldatetime que pour les valeurs date, datetime2 et datetimeoffset, selon le format de chaîne. Ce paramètre affecte l'interprétation de chaînes de caractères lorsqu'elles sont converties en valeurs de date pour le stockage dans la base de données. Il n'affecte pas l'affichage des valeurs du type de données date qui sont stockées dans la base de données ni le format de stockage.

Certains formats de chaînes de caractères, par exemple ISO 8601, sont interprétés indépendamment du paramètre DATEFORMAT. Pour plus d'informations sur l'utilisation du paramètre DATEFORMAT avec différents formats, consultez la section « Formats de date et d'heure de littéral de chaîne » dans Utilisation des données de date et d'heure.

L'option SET DATEFORMAT est appliquée lors de l'exécution, et non pas lors de l'analyse.

SET DATEFORMAT remplace le paramètre de format de date implicite de SET LANGUAGE.

Autorisations

Nécessite l'appartenance au rôle public.

Exemple

L'exemple suivant utilise différentes chaînes de date comme entrées dans les sessions avec le même paramètre DATEFORMAT.

-- Set date format to day/month/year.
SET DATEFORMAT dmy;
GO
DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567';
SELECT @datevar;
GO
-- Result: 2008-12-31 09:01:01.123
SET DATEFORMAT dmy;
GO
DECLARE @datevar datetime2 = '12/31/2008 09:01:01.1234567';
SELECT @datevar;
GO
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string.

GO