sql >> Database >  >> RDS >> Sqlserver

De laatste dag van de maand vinden in SQL Server

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   |
+----------------+---------+--------+---------+-----------+-----------+

  1. PostgreSQL 8.4 verleent DML-rechten op alle tabellen aan een rol

  2. Het einde van een lange variabele waarde in VBA inspecteren

  3. 4 manieren om NULL te vervangen door een andere waarde in MySQL

  4. Hoe phpMyAdmin te installeren