Подтвердить что ты не робот

SQL Query, чтобы найти последний день месяца

Мне нужно найти последний день месяца в следующем формате:

"2013-05-31 00:00:00:000"

Кто угодно, пожалуйста, помогите.

4b9b3361

Ответ 1

Попробуйте этот вариант -

CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth] 
(
    @Date DATETIME
)
RETURNS DATETIME
AS
BEGIN

    RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))

END

Query:

DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'

SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))

Вывод:

-----------------------
2013-05-31 00:00:00.000

Ответ 2

Я знаю, что этот вопрос был для SQL Server 2005, но я подумал, что упомянуть - с SQL 2012, теперь есть функция EOMONTH(), которая получает последний день месяца. Чтобы получить его в формате, указанном исходным запросом, вам нужно нажать на datetime.

SELECT CAST(eomonth(GETDATE()) AS datetime)

Ответ 3

SQL Server 2012 представляет функцию eomonth:

select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31

Ответ 4

declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);

Ответ 5

dateadd(month,1+datediff(month,0,getdate()),-1)

Чтобы проверить запуск:

print dateadd(month,1+datediff(month,0,@date),-1)

Ответ 6

Рассчитать последнюю дату месяца - довольно простой расчет -

  • Найдите общее количество месяцев до сегодняшнего дня, используя функцию DATEDIFF (..,..,..) - Выберите DATEDIFF (MM, 0, GETDATE())

Выход - 1374, Если вывод getdate() - "2014-07-23 19: 33: 46.850"

  • Увеличение на 1 в общий подсчет месяцев - Выберите DATEDIFF (MM, 0, GETDATE()) + 1

Выход - 1375, Если выход getdate() - "2014-07-23 19: 33: 46.850"

  • Получить первую дату следующего месяца - Выберите DATEADD (MM, DATEDIFF (MM, 0, GETDATE()) + 1,0)

Вывод - '2014-08-01 00: 00: 00.000', Если выход getdate() - "2014-07-23 19: 33: 46.850"

  • Вычтите на -1 в первую дату следующего месяца, которая вернет последнюю дату текущего месяца - Выберите DATEADD (DD, -1, DATEADD (MM, DATEDIFF (MM, 0, GETDATE()) + 1,0))

Выход - '2014-07-31 00: 00: 00.000', Если выход getdate() - "2014-07-23 19: 33: 46.850"

Таким же образом расчета мы можем достичь - 1. Последняя дата следующего месяца 2. Последняя дата предыдущего месяца и так далее...

Я надеюсь, что эта статья поможет.

Ответ 7

Выберите DATEADD (ДЕНЬ, - (ДЕНЬ (DATEADD (MONTH, 1, GETDATE()))), DATEADD (MONTH, 1, GETDATE()))

Это отлично работает в T-sql..

Замените GETDATE() запроса своим именем столбца.

Ответ 8

TO FIND 1ST and Last day of the Previous, Current and Next Month in Oracle SQL
-----------------------------------------------------------------------------
SELECT 
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1 FDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1)) LDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 FDCM,
LAST_DAY(SYSDATE)LDCM,
LAST_DAY(SYSDATE)+1 FDNM,
LAST_DAY(LAST_DAY(SYSDATE)+1) LDNM
FROM DUAL