Deklaracja daty

0

Proszę o pomoc, jak powinno wyglądać prawidłowe zapytanie.
Chciałbym określić zakres dat od pierwszego dnia miesiąca do ostatniego i podczas wywoływania zapytania określić pierwszy dzień miesiąca tego zakresu, w UserFormie pojawiającym się podczas wywołania zapytania.
Data, którą określę w ten sposób będzie następnie używana wszędzie tam, gdzie znajduje się @DataOd

declare @DataOd date = :DataOd;                                                 --deklaracja pierwszego dnia miesiąca
declare @DataDo date = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@DataOd)+1,0))     --ostatni dzień miesiąca

Z góry dziękuję za pomoc.

2

Jak rozumiem na podstawie daty chcesz wyciągnąć pierwszy i ostatni dzień z miesiąca w tej dacie tak?
Jeśli o to chodzi to powinno pomóc coś takiego:

select CONVERT(varchar,dateadd(d,-(day(getdate()-1)),getdate()),106),
       CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())),106)

ponadto jeszcze może ten link więcej Ci podpowie:
http://stackoverflow.com/questions/11743810/how-to-get-first-and-last-day-of-previous-month-with-timestamp-in-sql-server

oczywiście zamiast getdate() używasz swojego parametru @DataOd

0

W związku, że nie da się formatować w "komentarzach" to wklejam jako post:

Czyli coś takiego:

SELECT CONVERT(VARCHAR,dateadd(d,-(DAY(@DataOd)-1),@DataOd),106),
       CONVERT(VARCHAR,dateadd(d,-(DAY(dateadd(m,1,@DataOd))),dateadd(m,1,@DataOd)),106)
0

Dziękuję za odpowiedzi ale nie o to mi chodziło.
woolfik przyjął, że chcę jako datę wyjściową mieć aktualną.
BlackBad pobrał datę ze stałej @DataOd

Jako, że dopiero zaczynam przygodę z SQL nie jestem jeszcze obeznany z obowiązującymi zasadami. Korzystam z jednego programu do obsługi zapytań, który wynik zapytania przedstawia w formie raportu.
Nie wiem czy jest to standard, ale u mnie wygląda następująco.

  1. Tworzę nowy raport w programie.
  2. Wpisuję treść zapytania do bazy
  3. Klikam przycisk generowania tabeli i na ekranie mam wynik zapytania

Wiem, że akurat w tym programie da się podczas generowania raportu zadeklarować jakąś stałą w wyskakującym oknie. Załączam screen. To co chcę osiągnąć to właśnie to wyskakujące okno, tam wpiszę jaką tylko zechcę datę i to co tam wpiszę będzie wykorzystane w zapytaniu wszędzie tam, gdzie jest @DataOd

Ponieważ raporty chcę realizować dla różnych miesięcy, obecnie wpisałem w kodzie:

declare @DataOd date = '2017-05-01'; 

i za każdym razem edytuję kod, gdy chcę zmienić datę.

1

masakra ... zapytaj zatem kogoś kto Ci to narzędzie dał (program) w jaki sposób przekazać parametr z okna (screen) do zapytania. Ja raporty robiłem głównie w FastReport i tam jest to proste jak budowa cepa. Ty nie podałeś żadnych konkretnych informacji co to za program, więc niewiele możemy podpowiedzieć. No chyba, że ktoś po screenie wyłapie co to za program i jak używać parametrów z okna w zapytaniu.

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