Beginnend met SQL Server 2012, de EOMONTH()
functie kunt u de laatste dag van een bepaalde maand vinden. Het accepteert twee argumenten; één voor de startdatum en één optioneel argument om aan te geven hoeveel maanden er bij die datum moeten worden opgeteld.
Dit artikel geeft voorbeelden die laten zien hoe EOMONTH()
werkt in SQL Server.
Syntaxis
Ten eerste, hier is de syntaxis:
EOMONTH ( start_date [, month_to_add ] )
Waar start_date
is de datum waarvoor u de laatste dag van de maand wilt vinden, en month_to_add
is hoeveel maanden (indien van toepassing) u wilt toevoegen aan de startdatum.
De EOMONTH()
functie retourneert een waarde in de datum gegevenstype.
Voorbeeld 1
Hier is een eenvoudig voorbeeld om te demonstreren hoe het werkt:
SELECT EOMONTH( '2025-01-01' ) AS Result;
Resultaat:
+------------+ | Result | |------------| | 2025-01-31 | +------------+
In dit geval is onze startmaand januari, dus het resultaat laat ons zien dat de laatste dag van januari 31 is.
Voorbeeld 2 – Voeg een maand toe
Hier is een voorbeeld van het gebruik van een tweede argument om aan te geven hoeveel maanden er moeten worden toegevoegd. In dit geval voeg ik een maand toe aan de startdatum:
SELECT EOMONTH( '2025-01-01', 1 ) AS Result;
Resultaat:
+------------+ | Result | |------------| | 2025-02-28 | +------------+
En het resultaat toont ons de laatste dag van februari. Dit komt omdat we een maand hebben toegevoegd aan de startdatum.
Voorbeeld 3 – Een maand aftrekken
U kunt een negatief getal gebruiken om een of meer maanden van de startdatum af te trekken. Zoals dit:
SELECT EOMONTH( '2025-01-01', -1 ) AS Result;
Resultaat:
+------------+ | Result | |------------| | 2024-12-31 | +------------+
Voorbeeld 4 – De systeemdatum gebruiken
Hier is een voorbeeld van het krijgen van het einde van de maand vanaf de huidige datum:
SELECT SYSDATETIME() AS 'Current Date', EOMONTH( SYSDATETIME() ) AS 'End of Month';
Resultaat:
+-----------------------------+----------------+ | Current Date | End of Month | |-----------------------------+----------------| | 2018-06-04 22:53:32.7694823 | 2018-06-30 | +-----------------------------+----------------+
Zoals gezegd, de EOMONTH()
functie retourneert zijn waarde in de datum data type. Daarom laat het resultaat in dit voorbeeld een discrepantie zien tussen hoe de startdatum wordt weergegeven en hoe het einde van de maand wordt weergegeven.
In dit geval wordt onze startdatum gegenereerd met de SYSDATETIME()
functie, die zijn waarde retourneert als een datetime2(7) data type. Dit gegevenstype omvat zowel de tijdcomponent als de datum. De datum gegevenstype bevat alleen de datumcomponent.
U kunt de datum altijd opmaken met de FORMAT()
functie, of gebruik verschillende andere TSQL-functies om verschillende delen van de datum te extraheren.
Voorbeeld 5 – Aftellen tot het einde van de maand
Je kunt ook de EOMONTH()
. combineren functie met andere functies om het gewenste resultaat te bereiken.
Hier is een voorbeeld dat aangeeft hoeveel dagen, uren, minuten en seconden tot het einde van de maand:
SELECT FORMAT(SYSDATETIME(), 'dd MMMM') AS 'Current Date', FORMAT(EOMONTH( SYSDATETIME() ), 'dd MMMM') AS 'EOM', DATEDIFF(day, SYSDATETIME(), EOMONTH( SYSDATETIME() )) AS 'Days', DATEDIFF(hour, SYSDATETIME(), EOMONTH( SYSDATETIME() )) AS 'Hours', DATEDIFF(minute, SYSDATETIME(), EOMONTH( SYSDATETIME() )) AS 'Minutes', DATEDIFF(second, SYSDATETIME(), EOMONTH( SYSDATETIME() )) AS 'Seconds';
Resultaat:
+----------------+---------+--------+---------+-----------+-----------+ | Current Date | EOM | Days | Hours | Minutes | Seconds | |----------------+---------+--------+---------+-----------+-----------| | 04 June | 30 June | 26 | 601 | 36055 | 2163252 | +----------------+---------+--------+---------+-----------+-----------+