sql >> Database >  >> RDS >> Sqlserver

Hoe de huidige datumnotatie in SQL Server (T-SQL) te wijzigen

Wanneer u verbinding maakt met SQL Server, wordt het datumformaat meestal bepaald door uw taal. De standaardtaal voor een sessie is de taal voor de aanmelding van die sessie, tenzij deze per sessie wordt overschreven door gebruik te maken van de Open Database Connectivity (ODBC) of OLE DB API's.

De instelling van de datumnotatie is van invloed op de interpretatie van tekenreeksen wanneer ze worden geconverteerd naar datumwaarden voor opslag in de database. Het heeft geen invloed op de weergave van datumgegevenstypewaarden die zijn opgeslagen in de database of het opslagformaat.

Ondanks het feit dat de taal van uw sessie de datumnotatie bepaalt, kunt u desgewenst de datumnotatie overschrijven. Als uw taal bijvoorbeeld us_english is, , het datumformaat is mdy (zodat 01/07/2018 staat voor 1 juli en niet voor 7 januari). U kunt dit wijzigen zodat het datumformaat dmy . is (of een ander formaat) terwijl de taal us_english blijft .

U kunt T-SQL gebruiken om het datumformaat van de huidige sessie expliciet in te stellen met behulp van de SET DATEFORMAT verklaring.

Syntaxis

Zo werkt de syntaxis:

SET DATEFORMAT { format | @format_var }

Waar format | @format_var is de volgorde van de datumdelen.

Geldige waarden zijn mdy , dmy , ymd , ydm , myd , en dym . Dit kunnen Unicode- of dubbelbytetekensets (DBCS) zijn, geconverteerd naar Unicode.

Houd er echter rekening mee dat  ydm wordt niet ondersteund voor datumdatetime2 en datetimeoffset gegevenstypen.

Voorbeeld

Laten we, voordat we iets veranderen, eens kijken naar de huidige gebruikersopties. Dit zal ons vertellen wat de huidige taal is en het datumformaat (evenals een paar andere dingen):

DBCC USEROPTIONS;

Resultaat:

+-------------------------+----------------+
| 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 |
+-------------------------+----------------+

We kunnen zien dat de taal us_english is en het datumformaat is mdy (wat de standaard datumnotatie is voor die taal).

Laten we dus de datumnotatie wijzigen en de gebruikersopties opnieuw controleren:

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Resultaat:

 
+-------------------------+----------------+
| 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 |
+-------------------------+----------------+

En we kunnen zien dat het datumformaat is veranderd, terwijl de taal hetzelfde blijft.

Dus dit is hoe u het datumformaat kunt wijzigen zonder de taal te wijzigen. Zoals gezegd, als u de taal wijzigt, wordt tegelijkertijd impliciet het datumformaat ingesteld. Als dat is wat u wilt doen, bekijk dan Hoe u de huidige taal in SQL Server (T-SQL) instelt.


  1. Na een impasse met één transactie in alle SQL Server-versies

  2. MariaDB JSON_REMOVE() uitgelegd

  3. Een door komma's gescheiden tekenreeks omzetten in afzonderlijke rijen

  4. LOWER() Functie in Oracle