När du ansluter till SQL Server bestäms vanligtvis datumformatet av ditt språk. Standardspråket för en session är språket för den sessionens inloggning, såvida det inte åsidosätts per session genom att använda Open Database Connectivity (ODBC) eller OLE DB API:er.
Datumformatinställningen påverkar tolkningen av teckensträngar när de konverteras till datumvärden för lagring i databasen. Det påverkar inte visningen av datumdatatypvärden som lagras i databasen eller lagringsformatet.
Trots att din sessions språk bestämmer datumformatet kan du åsidosätta datumformatet om det behövs. Till exempel, om ditt språk är us_english
, kommer datumformatet att vara mdy
(så att 07/01/2018 representerar den 1 juli och inte den 7 januari). Du kan ändra detta så att datumformatet är dmy
(eller något annat format) medan språket förblir us_english
.
Du kan använda T-SQL för att uttryckligen ställa in datumformatet för den aktuella sessionen genom att använda SET DATEFORMAT
uttalande.
Syntax
Så här går syntaxen till:
SET DATEFORMAT { format | @format_var }
Där format | @format_var
är ordningen på datumdelarna.
Giltiga värden är mdy
, dmy
, ymd
, ydm
, myd
och dym
. Dessa kan vara antingen Unicode eller dubbelbyte teckenuppsättningar (DBCS) konverterade till Unicode.
Observera dock att ydm
stöds inte för datum , datetime2 och datumtidsförskjutning datatyper.
Exempel
Innan vi ändrar något, låt oss titta på de nuvarande användaralternativen. Detta kommer att berätta vad det aktuella språket är och datumformatet (liksom några andra saker):
DBCC USEROPTIONS;
Resultat:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Vi kan se att språket är us_english
och datumformatet är mdy
(vilket är standarddatumformatet för det språket).
Så låt oss ändra datumformatet och kontrollera sedan användaralternativen igen:
SET DATEFORMAT dmy; DBCC USEROPTIONS;
Resultat:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | dmy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Och vi kan se att datumformatet har ändrats, medan språket förblir detsamma.
Så här ändrar du datumformatet utan att ändra språket. Som nämnts, om du ändrar språket kommer det implicit att ställa in datumformatet samtidigt. Om det är vad du vill göra, kolla in Hur man ställer in det aktuella språket i SQL Server (T-SQL).