A volte, quando si lavora con SQL Server (o qualsiasi altro DBMS per quella materia), è necessario restituire il nome breve per un mese. Con questo intendo l'abbreviazione di 3 lettere di un mese. Ad esempio, è necessario "Dec" invece di "Dicembre".
Ecco quattro modi per estrarre il nome del mese abbreviato da una data in SQL Server.
La funzione FORMAT()
Il FORMAT()
La funzione è disponibile da SQL Server 2012 ed è il modo più conciso per restituire il mese come abbreviazione di 3 lettere.
Ecco un esempio di come funziona:
DECLARE @date datetime2 = '2000-01-01'; SELECT FORMAT(@date, 'MMM') AS 'FORMAT';
Risultato:
FORMAT ------ Jan
La prima riga dichiara semplicemente una variabile e le assegna una data. La seconda riga è dove restituiamo il nome breve del mese dalla data.
Le funzioni CAST() e DATENAME()
Questa opzione lancia la data come CHAR(3)
, tagliando così tutti i caratteri che seguono i primi tre.
Ecco un esempio:
DECLARE @date datetime2 = '2000-01-01'; SELECT CAST(DATENAME(month, @date) AS CHAR(3)) AS 'CAST/DATENAME';
Risultato:
CAST/DATENAME ------------- Jan
Le funzioni LEFT() e DATENAME()
Questa opzione è simile alla precedente, tranne per il fatto che utilizza il LEFT()
funzione per prendere i 3 caratteri più a sinistra della data.
Esempio:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(DATENAME(month, @date), 3) AS 'LEFT/DATENAME';
Risultato:
LEFT/DATENAME ------------- Jan
Le funzioni LEFT() e CONVERT()
Questa opzione converte la data in varchar, quindi prende i primi tre caratteri.
Esempio:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(CONVERT(varchar, @date, 100), 3) AS 'LEFT/CONVERT';
Risultato:
LEFT/CONVERT ------------ Jan
In questo esempio, il 100
argomento stilizza la data in modo che sia nel seguente formato:mon dd yyyy hh:miAM (o PM) . Quindi, nel nostro caso, la data ha lo stile di 1 gennaio 2000 00:00 .
Da lì, si tratta semplicemente di tagliare le prime tre lettere con il LEFT()
funzione.
Le funzioni LEFT() e MONTHNAME()
Questa opzione utilizza il MONTHNAME()
Funzione scalare ODBC per restituire il nome del mese. E come per i due esempi precedenti, estraiamo semplicemente le prime tre lettere del nome del mese.
Esempio:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT({fn MONTHNAME(@date)}, 3) AS 'LEFT/MONTHNAME';
Risultato:
LEFT/MONTHNAME -------------- Jan