Ответ 1
Вот ответ, который я придумал
=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)
В SQL Server Reporting Services, как бы я вычислил последний день текущего месяца?
Вот ответ, который я придумал
=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)
Как мне потребовалось некоторое время, чтобы понять это, и ответ JC был самым простым в изменении и имел хорошую логическую структуру. Я расширил его Немного для других, ищущих ответы на эту тему. Я нашел, что обычно вам нужен не только последний день месяца/года, который вы также хотите в первый день месяца/года. Итак, вот они - полные строки для вычисления именно этого. там также есть версия SQl.
Первый день текущего месяца
SSRS=Today.AddDays(1-Today.Day)
SQL=SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,getdate()),0))
Последний день текущего месяца
SSRS=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
SQL=SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
Первый день текущего года
SSRS=Today.AddMonths(1-Today.month).AddDays(1-Today.day)
SQL=SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
Последний день текущего года
SSRS=Today.AddDays(1-Today.Day).AddMonths(13-today.month).AddDays(-1)
SQL=SELECT DATEADD(dd,-1,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0)))
Надеюсь, это поможет.
Я знаю, что вы нашли свой собственный ответ, но я бы предложил эту альтернативу:
=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
Немного легче читать, на мой взгляд, и иметь немного лучшую производительность (хотя, скорее всего, незаметно)
И, конечно, если вы хотите выставить эту дату до 23:59:59, как это часто бывает необходимо, просто слегка измените:
=Today.AddDays(1-Today.Day).AddMonths(1).AddSeconds(-1)
Из блога члена команды Microsoft SQL:
-- returns the last day of the current month.
select dbo.Date(year(getdate()), month(getdate())+1,0)
http://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx
Надеюсь, это поможет! --Dubs
Вы можете попробовать это выражение, просто замените его на свое поле даты.
= DateSerial (год (сейчас), месяц (сейчас), 1)
Надеюсь это поможет.
С уважением
вы можете использовать сборку для выполнения этой работы, добавив ее в качестве ссылки.