sql >> Databáze >  >> RDS >> Sqlserver

Jak najít poslední den v měsíci na serveru SQL

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

  1. chyba při instalaci psycopg2, knihovna nebyla nalezena pro -lssl

  2. Získání a instalace Microsoft SQL Server Management Studio

  3. Použití funkce Max() k výběru skupinových hodnot

  4. Jak změnit řazení na úrovni serveru spuštěné instance SQL Server