Ibland när du arbetar med SQL Server (eller någon annan DBMS för den delen), måste du returnera det korta namnet i en månad. Med detta menar jag förkortningen på 3 bokstäver i en månad. Till exempel behöver du "Dec" istället för "December".
Här är fyra sätt du kan extrahera det förkortade månadsnamnet från ett datum i SQL Server.
FORMAT()-funktionen
FORMAT()
Funktionen har varit tillgänglig sedan SQL Server 2012, och det är det mest kortfattade sättet att returnera månaden som en förkortning på tre bokstäver.
Här är ett exempel på hur det fungerar:
DECLARE @date datetime2 = '2000-01-01'; SELECT FORMAT(@date, 'MMM') AS 'FORMAT';
Resultat:
FORMAT ------ Jan
Den första raden deklarerar helt enkelt en variabel och tilldelar den ett datum. Den andra raden är där vi returnerar det korta månadsnamnet från datumet.
CAST()- och DATENAME()-funktionerna
Detta alternativ kastar datumet som CHAR(3)
, och klipper därmed bort alla tecken som följer efter de tre första.
Här är ett exempel:
DECLARE @date datetime2 = '2000-01-01'; SELECT CAST(DATENAME(month, @date) AS CHAR(3)) AS 'CAST/DATENAME';
Resultat:
CAST/DATENAME ------------- Jan
Funktionerna LEFT() och DATENAME()
Det här alternativet liknar det föregående, förutom att det använder LEFT()
funktion för att ta de 3 tecknen längst till vänster från datumet.
Exempel:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(DATENAME(month, @date), 3) AS 'LEFT/DATENAME';
Resultat:
LEFT/DATENAME ------------- Jan
Funktionerna LEFT() och CONVERT()
Detta alternativ konverterar datumet till varchar och tar sedan de första tre tecknen.
Exempel:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(CONVERT(varchar, @date, 100), 3) AS 'LEFT/CONVERT';
Resultat:
LEFT/CONVERT ------------ Jan
I det här exemplet är 100
argument formaterar datumet så att det är i följande format:mån dd åååå hh:miAM (eller PM) . Så i vårt fall är datumet formaterat som 1 jan 2000 12:00 .
Därifrån är det bara en fråga om att klippa bort de tre första bokstäverna med LEFT()
funktion.
Funktionerna LEFT() och MONTHNAME()
Det här alternativet använder MONTHNAME()
ODBC skalär funktion för att returnera månadens namn. Och som med de två föregående exemplen extraherar vi helt enkelt de tre första bokstäverna i det månadsnamnet.
Exempel:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT({fn MONTHNAME(@date)}, 3) AS 'LEFT/MONTHNAME';
Resultat:
LEFT/MONTHNAME -------------- Jan