sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man ändrar det aktuella datumformatet i SQL Server (T-SQL)

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 datumdatetime2 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).


  1. Vad är det snabbaste sättet att trunkera tidsstämplar till 5 minuter i Postgres?

  2. Python-import MySQLdb-fel - Mac 10.6

  3. Hur man dockar/avdockar frågefönster och andra flikar i SQL Server Management Studio (SSMS) - SQL Server/TSQL självstudie del 21

  4. Hur man begränsar resultat i Oracle