Branie rekordów z przedziału czasowego

0

Witam,

mam takie pytanie - mam procedurkę i do niej przesyłam datę od i datę do.
W mojej aplikacji daty się wybiera za pomocą date pickera, który nie uwzględnia dni (miesiąc/rok), po skonwertowaniu wrzuca mi 1 jako dzień.
Teraz np. biorę zakres 01/2020 - 06/2020, więc zależy mi żeby brało rekordy z datą 01/01/2020 - 30/06/2020, natomiast bierze mi rekordy z zakresu 01/01/2020 - 01/06/2020.
Miałem metodę w C#, która do drugiej daty wstawiała mi ostatni dzień miesiąca i lokalnie mi to działało, ale jak wystawiłem apkę to wywala error 500.
Nie wiem jaki jest tego powód, ale w takim wypadku próbuję wziąć ten zakres i chciałbym, żeby w bazie porównywało mi te daty ignorując dzień. Jak mogę takie coś osiągnąć?
Procedurka:

ALTER PROCEDURE [dbo].[TestProcedure]
	@App varchar(10),
	@DateFrom Date,
	@DateTo Date
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    SELECT COUNT(DISTINCT UserId) NewUsers, Shop
	FROM view_TestView
	WHERE App = @App
		AND Date >= @DateFrom AND Date <= @DateTo <-- tutaj próbowałem formatowania, ale nie potrafię tego zrobić ignorując dzień, przez co dalej nie bierze mi z dat pełnego zakresu
	GROUP BY Shop
	ORDER BY COUNT(DISTINCT UserId) DESC
END
4

Pisałem z głowy ale coś takiego da Ci ostatni dzień miesiąca z podanej daty:

DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @DateTo) + 1, 0))

ten kod sprawdziłem i działa na 100%:

SELECT DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, CAST('02/01/2020' as date)) + 1, 0))

1 użytkowników online, w tym zalogowanych: 0, gości: 1