Począwszy od SQL Server 2012, EOMONTH()
funkcja pozwala znaleźć ostatni dzień danego miesiąca. Przyjmuje dwa argumenty; jeden dla daty rozpoczęcia i jeden opcjonalny argument określający, ile miesięcy należy dodać do tej daty.
Ten artykuł zawiera przykłady pokazujące, jak EOMONTH()
działa w SQL Server.
Składnia
Po pierwsze, oto składnia:
EOMONTH ( start_date [, month_to_add ] )
Gdzie start_date
to data, dla której chcesz znaleźć ostatni dzień miesiąca, a month_to_add
to ile miesięcy (jeśli w ogóle) chcesz dodać do daty rozpoczęcia.
EOMONTH()
funkcja zwraca wartość z daty typ danych.
Przykład 1
Oto podstawowy przykład pokazujący, jak to działa:
SELECT EOMONTH( '2025-01-01' ) AS Result;
Wynik:
+------------+ | Result | |------------| | 2025-01-31 | +------------+
W tym przypadku naszym miesiącem początkowym jest styczeń, więc wynik pokazuje, że ostatnim dniem stycznia jest 31.
Przykład 2 – Dodaj miesiąc
Oto przykład użycia drugiego argumentu do określenia liczby miesięcy do dodania. W takim przypadku dodaję miesiąc do daty rozpoczęcia:
SELECT EOMONTH( '2025-01-01', 1 ) AS Result;
Wynik:
+------------+ | Result | |------------| | 2025-02-28 | +------------+
A wynik pokazuje nam ostatni dzień lutego. Dzieje się tak, ponieważ do daty rozpoczęcia dodaliśmy jeden miesiąc.
Przykład 3 – Odejmij miesiąc
Możesz użyć liczby ujemnej, aby odjąć jeden lub więcej miesięcy od daty rozpoczęcia. Tak:
SELECT EOMONTH( '2025-01-01', -1 ) AS Result;
Wynik:
+------------+ | Result | |------------| | 2024-12-31 | +------------+
Przykład 4 – Używanie daty systemowej
Oto przykład pobrania końca miesiąca od bieżącej daty:
SELECT SYSDATETIME() AS 'Current Date', EOMONTH( SYSDATETIME() ) AS 'End of Month';
Wynik:
+-----------------------------+----------------+ | Current Date | End of Month | |-----------------------------+----------------| | 2018-06-04 22:53:32.7694823 | 2018-06-30 | +-----------------------------+----------------+
Jak wspomniano, EOMONTH()
funkcja zwraca swoją wartość w dacie typ danych. Dlatego wynik w tym przykładzie pokazuje rozbieżność między sposobem wyświetlania daty rozpoczęcia a sposobem wyświetlania końca miesiąca.
W tym przypadku nasza data rozpoczęcia jest generowana za pomocą SYSDATETIME()
funkcja, która zwraca swoją wartość jako datetime2(7) typ danych. Ten typ danych zawiera składnik czasu oraz datę. data typ danych zawiera tylko składnik daty.
Zawsze możesz sformatować datę za pomocą FORMAT()
funkcji lub użyj różnych innych funkcji TSQL, aby wyodrębnić różne części daty.
Przykład 5 – Odliczanie do końca miesiąca
Możesz także połączyć EOMONTH()
współpracować z innymi funkcjami, aby osiągnąć pożądany rezultat.
Oto przykład, który zwraca liczbę dni, godzin, minut i sekund do końca miesiąca:
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';
Wynik:
+----------------+---------+--------+---------+-----------+-----------+ | Current Date | EOM | Days | Hours | Minutes | Seconds | |----------------+---------+--------+---------+-----------+-----------| | 04 June | 30 June | 26 | 601 | 36055 | 2163252 | +----------------+---------+--------+---------+-----------+-----------+