SET DATEFORMAT (Transact-SQL)
Legt die Reihenfolge der Datumsteile für den Tag, den Monat und das Jahr für das Interpretieren der Zeichenfolgen date, smalldatetime, datetime, datetime2 und datetimeoffset fest.
Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).
Transact-SQL-Syntaxkonventionen
Syntax
SET DATEFORMAT { format | @format_var }
Argumente
- format | **@**format_var
Reihenfolge der Datumsteile. Gültige Parameter sind mdy, dmy, ymd, ydm, myd und dym. Kann entweder in Unicode oder in Doppelbyte-Zeichensätzen (Double-Byte Character Set, DBCS), die in Unicode konvertiert wurden, dargestellt werden. Der Standardparameter für Englisch (USA) ist mdy. Die standardmäßige DATEFORMAT-Einstellung aller Unterstützungssprachen finden Sie unter sp_helplanguage (Transact-SQL).
Hinweise
Die DATEFORMAT-Einstellung ydm wird für die Datentypen date, datetime2 und datetimeoffset nicht unterstützt.
Die Auswirkungen der DATEFORMAT-Einstellung auf die Interpretation der Zeichenfolgen können für die Werte von datetime und smalldatetime und für die Werte von date, datetime2 und datetimeoffset je nach dem Zeichenfolgenformat unterschiedlich sein. Diese Einstellung wirkt sich nur auf die Interpretation von Zeichenfolgen bei der Konvertierung in Datumswerte zum Speichern in der Datenbank aus. Sie wirkt sich nicht auf die Anzeige der Werte für Datumsdatentypen, die in der Datenbank gespeichert sind, oder auf das Speicherformat aus.
Einige Zeichenfolgenformate, z. B. ISO 8601, werden unabhängig von der DATEFORMAT-Einstellung interpretiert.
Die Einstellung von SET DATEFORMAT wird zur Ausführungszeit und nicht zur Analysezeit festgelegt.
SET DATEFORMAT überschreibt die implizite Einstellung für das Datumsformat von SET LANGUAGE.
Berechtigungen
Erfordert die Mitgliedschaft in der public-Rolle.
Beispiele
Im folgenden Beispiel werden andere Datumszeichenfolgen als Eingaben in Sitzungen mit derselben DATEFORMAT-Einstellung verwendet.
-- 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