Jak uzyskać ostatni dzień miesiąca za pomocą SQL Reporting Services

W SQL Server Reporting Services, Jak obliczyć ostatni dzień bieżącego miesiąca?

Author: Cory, 2010-05-18

5 answers

Oto odpowiedź, którą wymyśliłem

=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)
 37
Author: Cory,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-17 21:20:29

Ponieważ trochę mi to zajęło, a odpowiedź JC była najprostsza do modyfikacji i miała dobrą logiczną strukturę. Rozszerzyłem go nieco dla innych szukających odpowiedzi na ten temat. Znalazłem normalnie nie chcesz tylko ostatni dzień miesiąca / roku chcesz również pierwszy dzień miesiąca / roku. Więc tutaj są pełne linie do obliczenia tylko, że. tam też pojawiła się wersja SQl.

Pierwszy dzień bieżącego miesiąca

SSRS=Today.AddDays(1-Today.Day)
SQL=SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,getdate()),0))

Ostatni dzień bieżącego Miesiąc

SSRS=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
SQL=SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))

Pierwszy dzień bieżącego roku

SSRS=Today.AddMonths(1-Today.month).AddDays(1-Today.day)
SQL=SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

Ostatni dzień bieżącego roku

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)))
Mam nadzieję, że to pomoże somone.
 18
Author: Technane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-24 08:14:08

Wiem, że znalazłeś własną odpowiedź, ale sugerowałbym taką alternatywę:

=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
Według mnie jest to trochę łatwiejsze do odczytania i może mieć nieco lepszą wydajność (choć najprawdopodobniej niezauważalną)

I oczywiście, jeśli chcesz przesunąć tę datę na 23:59: 59, jak często jest to konieczne, po prostu zmodyfikuj nieznacznie:

=Today.AddDays(1-Today.Day).AddMonths(1).AddSeconds(-1)
 9
Author: JC Ford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-23 02:23:57

Z bloga członka zespołu 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

Mam nadzieję, że to pomoże! -- Dubs
 0
Author: Dubs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-18 17:42:34

Możesz użyć zestawu do wykonania tej pracy, dodając go jako odniesienie.

 -1
Author: masoud ramezani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-18 11:05:00