Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намерите последния ден от месеца в SQL Server

Започвайки от SQL Server 2012, EOMONTH() функцията ви позволява да намерите последния ден от всеки месец. Приема два аргумента; един за началната дата и един незадължителен аргумент, за да посочите колко месеца да добавите към тази дата.

Тази статия предоставя примери, които демонстрират как EOMONTH() работи в SQL Server.

Синтаксис

Първо, ето синтаксиса:

EOMONTH ( start_date [, month_to_add ] )

Където start_date е датата, за която искате да намерите последния ден от месеца, и month_to_add е колко месеца (ако има такива), които искате да добавите към началната дата.

EOMONTH() функцията връща стойност в дата тип данни.

Пример 1

Ето основен пример, за да демонстрирате как работи:

SELECT EOMONTH( '2025-01-01' ) AS Result;

Резултат:

+------------+
| Result     |
|------------|
| 2025-01-31 |
+------------+

В този случай нашият начален месец е януари, така че резултатът ни показва, че последният ден на януари е 31.

Пример 2 – Добавете месец

Ето пример за използване на втори аргумент, за да посочите колко месеца да добавите. В този случай добавям един месец към началната дата:

SELECT EOMONTH( '2025-01-01', 1 ) AS Result;

Резултат:

+------------+
| Result     |
|------------|
| 2025-02-28 |
+------------+

И резултатът ни показва последния ден на февруари. Това е така, защото добавихме един месец към началната дата.

Пример 3 – Изваждане на месец

Можете да използвате отрицателно число, за да извадите един или повече месеца от началната дата. Като това:

SELECT EOMONTH( '2025-01-01', -1 ) AS Result;

Резултат:

+------------+
| Result     |
|------------|
| 2024-12-31 |
+------------+

Пример 4 – Използване на системната дата

Ето пример за получаване на края на месеца от текущата дата:

SELECT 
    SYSDATETIME() AS 'Current Date',
    EOMONTH( SYSDATETIME() ) AS 'End of Month';

Резултат:

+-----------------------------+----------------+
| Current Date                | End of Month   |
|-----------------------------+----------------|
| 2018-06-04 22:53:32.7694823 | 2018-06-30     |
+-----------------------------+----------------+

Както споменахме, EOMONTH() функцията връща стойността си в дата тип данни. Ето защо резултатът в този пример показва несъответствие между начина, по който се показва началната дата и как се показва краят на месеца.

В този случай нашата начална дата се генерира с SYSDATETIME() функция, която връща стойността си като datetime2(7) тип данни. Този тип данни включва компонента за време, както и датата. Датата типът данни включва само компонента за дата.

Винаги можете да форматирате датата с помощта на FORMAT() функция или използвайте различни други функции на TSQL, за да извлечете различни части от датата.

Пример 5 – Отброяване до края на месеца

Можете също да комбинирате EOMONTH() функционира с други функции, за да постигнете желания резултат.

Ето пример, който връща колко дни, часове, минути и секунди до края на месеца:

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';

Резултат:

+----------------+---------+--------+---------+-----------+-----------+
| Current Date   | EOM     | Days   | Hours   | Minutes   | Seconds   |
|----------------+---------+--------+---------+-----------+-----------|
| 04 June        | 30 June | 26     | 601     | 36055     | 2163252   |
+----------------+---------+--------+---------+-----------+-----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да настроите поща на база данни в SQL Server (SSMS)

  2. Как да преместя pandas DataFrame в таблицата на Microsoft SQL Server?

  3. Връщане на списък с изчислени колони в SQL Server

  4. sql кръстосано присъединяване - каква полза е намерил някой от него?

  5. Как работи функцията TRANSLATE() в SQL Server (T-SQL)