Počínaje SQL Serverem 2012, EOMONTH()
funkce vám umožňuje najít poslední den v daném měsíci. Přijímá dva argumenty; jeden pro počáteční datum a jeden volitelný argument určující, kolik měsíců se má k tomuto datu přidat.
Tento článek obsahuje příklady, které ukazují, jak EOMONTH()
funguje na serveru SQL.
Syntaxe
Nejprve je zde syntaxe:
EOMONTH ( start_date [, month_to_add ] )
Kde start_date
je datum, pro které chcete najít poslední den v měsíci, a month_to_add
je počet měsíců (pokud existují), které chcete přidat k datu zahájení.
EOMONTH()
funkce vrací hodnotu v datu datový typ.
Příklad 1
Zde je základní příklad, který demonstruje, jak to funguje:
SELECT EOMONTH( '2025-01-01' ) AS Result;
Výsledek:
+------------+ | Result | |------------| | 2025-01-31 | +------------+
V tomto případě je naším počátečním měsícem leden, takže výsledek nám ukazuje, že posledním dnem ledna je 31.
Příklad 2 – Přidat měsíc
Zde je příklad použití druhého argumentu k určení, kolik měsíců se má přidat. V tomto případě přidám k datu zahájení jeden měsíc:
SELECT EOMONTH( '2025-01-01', 1 ) AS Result;
Výsledek:
+------------+ | Result | |------------| | 2025-02-28 | +------------+
A výsledek nám ukazuje poslední únorový den. Důvodem je, že jsme k datu zahájení přidali jeden měsíc.
Příklad 3 – Odečtěte měsíc
K odečtení jednoho nebo více měsíců od počátečního data můžete použít záporné číslo. Takhle:
SELECT EOMONTH( '2025-01-01', -1 ) AS Result;
Výsledek:
+------------+ | Result | |------------| | 2024-12-31 | +------------+
Příklad 4 – Použití systémového data
Zde je příklad získání konce měsíce z aktuálního data:
SELECT SYSDATETIME() AS 'Current Date', EOMONTH( SYSDATETIME() ) AS 'End of Month';
Výsledek:
+-----------------------------+----------------+ | Current Date | End of Month | |-----------------------------+----------------| | 2018-06-04 22:53:32.7694823 | 2018-06-30 | +-----------------------------+----------------+
Jak již bylo zmíněno, EOMONTH()
funkce vrátí svou hodnotu v datu datový typ. To je důvod, proč výsledek v tomto příkladu ukazuje nesrovnalost mezi tím, jak je zobrazeno počáteční datum a jak je zobrazen konec měsíce.
V tomto případě je naše počáteční datum vygenerováno pomocí SYSDATETIME()
funkce, která vrací svou hodnotu jako datetime2(7) datový typ. Tento datový typ zahrnuje časovou složku a také datum. Datum datový typ zahrnuje pouze komponentu data.
Datum můžete vždy naformátovat pomocí FORMAT()
nebo použijte různé další funkce TSQL k extrahování různých částí data.
Příklad 5 – Odpočítávání do konce měsíce
Můžete také kombinovat EOMONTH()
funkce s dalšími funkcemi k dosažení požadovaného výsledku.
Zde je příklad, který vrací, kolik dní, hodin, minut a sekund do konce měsíce:
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';
Výsledek:
+----------------+---------+--------+---------+-----------+-----------+ | Current Date | EOM | Days | Hours | Minutes | Seconds | |----------------+---------+--------+---------+-----------+-----------| | 04 June | 30 June | 26 | 601 | 36055 | 2163252 | +----------------+---------+--------+---------+-----------+-----------+