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 Types de données et fonctions de date et d'heure (Transact-SQL).
Conventions de la syntaxe 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.
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