Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come modificare il formato della data corrente in SQL Server (T-SQL)

Quando ci si connette a SQL Server, in genere il formato della data è determinato dalla lingua. La lingua predefinita per una sessione è la lingua per l'accesso di quella sessione, a meno che non venga sovrascritta in base alla sessione tramite Open Database Connectivity (ODBC) o API OLE DB.

L'impostazione del formato della data influisce sull'interpretazione delle stringhe di caratteri poiché vengono convertite in valori di data per l'archiviazione nel database. Non influisce sulla visualizzazione dei valori del tipo di dati della data archiviati nel database o sul formato di archiviazione.

Nonostante il fatto che la lingua della tua sessione determini il formato della data, puoi sovrascrivere il formato della data se necessario. Ad esempio, se la tua lingua è us_english , il formato della data sarà mdy (in modo che 07/01/2018 rappresenta il 1 luglio e non il 7 gennaio). Puoi cambiarlo in modo che il formato della data sia dmy (o qualsiasi altro formato) mentre la lingua rimane us_english .

È possibile utilizzare T-SQL per impostare in modo esplicito il formato della data della sessione corrente utilizzando SET DATEFORMAT dichiarazione.

Sintassi

Ecco come va la sintassi:

SET DATEFORMAT { format | @format_var }

Dove format | @format_var è l'ordine delle parti della data.

I valori validi sono mdy , dmy , ymd , ydm , myd e dym . Questi possono essere Unicode o set di caratteri a doppio byte (DBCS) convertiti in Unicode.

Tuttavia, tieni presente che  ydm non è supportato per datadataora2datetimeoffset tipi di dati.

Esempio

Prima di modificare qualcosa, diamo un'occhiata alle opzioni utente correnti. Questo ci dirà qual è la lingua corrente e il formato della data (oltre a poche altre cose):

DBCC USEROPTIONS;

Risultato:

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

Possiamo vedere che la lingua è us_english e il formato della data è mdy (che è il formato della data predefinito per quella lingua).

Quindi cambiamo il formato della data, quindi controlliamo di nuovo le opzioni utente:

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Risultato:

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

E possiamo vedere che il formato della data è cambiato, mentre la lingua rimane la stessa.

Quindi ecco come cambiare il formato della data senza cambiare la lingua. Come accennato, se si cambia la lingua, verrà impostato implicitamente il formato della data allo stesso tempo. Se è quello che vuoi fare, dai un'occhiata a Come impostare la lingua corrente in SQL Server (T-SQL).