Soms moet u, wanneer u met SQL Server (of een ander DBMS) werkt, de korte naam voor een maand retourneren. Hiermee bedoel ik de 3-letterige afkorting van een maand. U hebt bijvoorbeeld "Dec" nodig in plaats van "December".
Hier zijn vier manieren waarop u de naam van de verkorte maand kunt extraheren uit een datum in SQL Server.
De FORMAT()-functie
De FORMAT()
functie is beschikbaar sinds SQL Server 2012, en het is de meest beknopte manier om de maand als een 3-letterige afkorting terug te geven.
Hier is een voorbeeld van hoe het werkt:
DECLARE @date datetime2 = '2000-01-01'; SELECT FORMAT(@date, 'MMM') AS 'FORMAT';
Resultaat:
FORMAT ------ Jan
De eerste regel declareert eenvoudig een variabele en wijst er een datum aan toe. De tweede regel is waar we de naam van de korte maand vanaf de datum retourneren.
De functies CAST() en DATENAME()
Met deze optie wordt de datum weergegeven als CHAR(3)
, waardoor alle tekens die op de eerste drie volgen worden afgesneden.
Hier is een voorbeeld:
DECLARE @date datetime2 = '2000-01-01'; SELECT CAST(DATENAME(month, @date) AS CHAR(3)) AS 'CAST/DATENAME';
Resultaat:
CAST/DATENAME ------------- Jan
De functies LEFT() en DATENAME()
Deze optie is gelijk aan de vorige, behalve dat het de LEFT()
. gebruikt functie om de 3 meest linkse karakters van de datum te nemen.
Voorbeeld:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(DATENAME(month, @date), 3) AS 'LEFT/DATENAME';
Resultaat:
LEFT/DATENAME ------------- Jan
De functies LEFT() en CONVERT()
Deze optie converteert de datum naar varchar en neemt vervolgens de eerste drie tekens over.
Voorbeeld:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(CONVERT(varchar, @date, 100), 3) AS 'LEFT/CONVERT';
Resultaat:
LEFT/CONVERT ------------ Jan
In dit voorbeeld is de 100
argument stijlt de datum zodat deze de volgende notatie heeft:mon dd yyyy hh:miAM (of PM) . Dus in ons geval is de datum gestileerd als 1 januari 2000 12:00AM .
Vanaf daar is het gewoon een kwestie van de eerste drie letters wegknippen met de LEFT()
functie.
De functies LEFT() en MONTHNAME()
Deze optie gebruikt de MONTHNAME()
ODBC scalaire functie om de naam van de maand te retourneren. En net als bij de vorige twee voorbeelden, extraheren we gewoon de eerste drie letters van die maandnaam.
Voorbeeld:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT({fn MONTHNAME(@date)}, 3) AS 'LEFT/MONTHNAME';
Resultaat:
LEFT/MONTHNAME -------------- Jan