In SQL Server, puoi utilizzare il MONTH()
funzione per restituire la parte "mese" di una data. Viene restituito come numero intero (non il nome del mese).
Di seguito sono riportati esempi di come utilizzare questa funzione.
Sintassi
La sintassi è questa:
MONTH ( date )
Dove date
è un'espressione che si risolve in uno dei seguenti tipi di dati:
- data
- data e ora
- datatimeoffset
- dataora2
- smalldatetime
- tempo
Può essere un'espressione di colonna, un'espressione, una stringa letterale o una variabile definita dall'utente.
Esempio
Ecco un esempio di base di come funziona:
SELECT SYSDATETIME() AS 'Date', MONTH(SYSDATETIME()) AS 'Month';
Risultato:
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Quindi il MONTH()
la funzione è stata in grado di estrarre il mese da datetime2 valore (che è stato restituito da SYSDATETIME()
funzione).
Data fornita come stringa letterale
Ecco un esempio in cui la data viene fornita come una stringa letterale.
SELECT MONTH('2019-01-07') AS Result;
Risultato:
+----------+ | Result | |----------| | 1 | +----------+
Ed ecco un esempio in cui la data è fornita in un formato diverso:
SELECT MONTH('07/01/2017') AS Result;
Risultato:
+----------+ | Result | |----------| | 7 | +----------+
Tuttavia, di solito è meglio evitare di utilizzare le date in tali formati. In tal caso, dovrai prestare attenzione alle impostazioni della lingua e/o alle impostazioni del formato della data della sessione corrente.
Impostazioni lingua
L'output dell'esempio precedente dipenderà dalle impostazioni della lingua e/o dal formato della data della sessione corrente.
Quando impostiamo la lingua, il formato della data viene impostato implicitamente allo stesso tempo.
Ecco cosa succede quando forniamo lo stesso argomento data in due ambienti linguistici diversi.
Britannico
SET LANGUAGE British; SELECT MONTH('07/01/2017') AS Result;
Risultato:
+----------+ | Result | |----------| | 1 | +----------+
us_inglese
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Risultato:
+----------+ | Result | |----------| | 7 | +----------+
Impostazioni formato data
Le impostazioni del formato della data possono sovrascrivere le impostazioni della lingua, quindi è necessario anche essere a conoscenza di questa impostazione. Ad esempio, potremmo usare us_English per la nostra lingua (che ha un formato di data predefinito di mdy ), ma potremmo sostituire il formato della data in modo che sia dmy .
Ecco un esempio:
us_English – Formato data predefinito
Qui, impostiamo la lingua su us_English , che imposta implicitamente il formato della data su myy .
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Risultato:
+----------+ | Result | |----------| | 7 | +----------+
us_English – Sostituisci formato data
Qui, impostiamo la lingua su us_English (che imposta implicitamente il formato della data), ma poi impostiamo esplicitamente il formato della data su dmy . Questo sovrascrive il formato della data che è stato impostato in modo implicito quando abbiamo impostato la lingua.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Risultato:
+----------+ | Result | |----------| | 1 | +----------+
Restituisci il nome del mese
Se è necessario restituire il nome del mese (anziché il numero del mese), vedere 3 modi per ottenere il nome del mese da una data in SQL Server.