BETWEEN to DATEs klauzula
Postovane kolege,
treba mi mala pomoc, pokusavam da napravim upit kojim bih prikazao odredjene podatke iz baze u odredjenom vremenskom intervalu koji nije definisan u samom upitu vec se trazi od korisnika da odabere dva datuma. E sad, to je vrlo jednostavno kada ja u upitu odredim datume npr.: SELECT * FROM Tabela1 WHERE (ID = @ID) AND (Datum between ('01.01.2013') and ('07.01.2013') ... ali problem mi se javlja kada ne zelim da odredim tacan datum u upitu vec kao sto sam rekao, ostavljam to da odredi korisnik preko aplikacije. Moze li mala pomoc? |
Šta je problem? Kakva aplikacija?
|
Pravim neki program u C# -u za jednu firmu. Da li mozda imate neku ideju kako da premostim problem?
|
Pa problem je input korisnika prebaciti u upit ili sta?
Ako tu varijablu koju korisnik popunjava imas tipa 'date' lagano je mozes proslijediti SQLu ili je konvertujes u string ili sta ti je vec potrebno.. |
Pa već ti je parametrizovan upit (imaš @ID), isto to uradiš i za ta dva datuma i proslediš ih iz korisničkog unosa.
|
Ne moze, pokusao sam na nesto slicne nacine kao sto sam naveo, ali izlaze mi neke bezvezne poruke.
SELECT * FROM Tabela1 WHERE (ID = @ID) AND (Datum between (@Datum) and (@Datum) Da li mozete da mi napisete nesto koda kako bih imao naznaku sta da radim? |
Sorry, ne mogu da ti napišem kod pošto već godinama ne gajim windows (a ni .NET) na mašinama. U svakom slučaju, ne trebaju ti zagrade oko @Datum, a i treba da imaš dva datuma a ne jedan (npr. @DatumOd i @DatumDo). Takođe, pazi na izbalansiranost zagrada, već dvaput si pejstovao upit sa neparnim brojem zagrada.
Kakve bezvezne poruke ti izlaze? Obično su bezvezne poruke tu da bi ti ukazale na grešku. |
1 Prilog(a)
Nisam pejstovao, kucao sam direktno na forumu jer nisam hteo da smaram ljude sa citavim upitom, vec sam samo hteo da pokazem na koji nacin sam ja pokusavao da dodjem do resenja. Inace, sto se tice datuma,imam samo jedan datum Zavrsetak (nekog task-a) i potrebno mi je da prikazem sve task-ove koji su Zavrseni u odredjenom intervalu.
Sve je u redu kad napisem: SELECT C_Linija, Zavrsetak, OperaterID, vrpID, StatusId, DigitalizacijaID FROM Digitalizacija WHERE (Zavrsetak BETWEEN '2012-01-01' AND '2012-01-31') AND (OperaterID = @OperaterID) and StatusID='LIVE' ali kada necu da odredim tacan datum u upitu: SELECT C_Linija, Zavrsetak, OperaterID, vrpID, StatusId, DigitalizacijaID FROM Digitalizacija WHERE (Zavrsetak BETWEEN @Zavrsetak AND @Zavrsetak) AND (OperaterID = @OperaterID) AND (StatusId = 'LIVE') tada mi izlazi prozor za unos parametra koji mi dozvoljava unos samo jednog datuma ali ne i drugog, i OperaterID-a! Nadam se da sam bio dovoljno jasan.Prilog 903 (Upit pisem u DataSet-u C# aplikacije) |
U drugom upitu imas @Zavrsetak na oba mesta gde idu datumi, umesto toga treba
... WHERE (Zavrsetak BETWEEN @Pocetak AND @Zavrsetak) .. ako želiš posebne parametre za početni i krajnji datum. |
...Ali ne treba da napravim upit sa dva datuma vec sa jednim (Zavrsetak), stvar je u tome da je potrebno da se rade izvestaji za mesec za sve taskove koji su zavseni u tom mesecu. Nije nuzno da task koji je zapocet u jednom mesecu bude zavrsen u istom, i zbog toga mi je potreban upit koji za parametre ima jedan datum u odredjenom rasponu (''selektuj mi sve taskove koji su "Zavrseni" u periodu "tom" i "tom"'')!
|
Ako napišeš
SELECT C_Linija, Zavrsetak, OperaterID, vrpID, StatusId, DigitalizacijaID FROM Digitalizacija WHERE (Zavrsetak BETWEEN @Zavrsetak AND @Zavrsetak) AND (OperaterID = @OperaterID) AND (StatusId = 'LIVE') to je isto kao da si napisao SELECT C_Linija, Zavrsetak, OperaterID, vrpID, StatusId, DigitalizacijaID FROM Digitalizacija WHERE (Zavrsetak BETWEEN '2012-01-01' AND '2012-01-01') AND (OperaterID = @OperaterID) and StatusID='LIVE' Ponovo pročitaj šta si pisao od početka teme, u primerima imaš 2 datuma, kad staviš parametar spominješ samo jedan datum. Ako staviš isti parametar na oba mesta za datum, naravno da će ti ponuditi unos samo jedne vrednosti za parametar |
U pravu si! Da li mozda znas kako treba da napisem a da ostavim dva parametra za jednu kolonu?
|
SELECT C_Linija, Zavrsetak, OperaterID, vrpID, StatusId, DigitalizacijaID
FROM Digitalizacija WHERE (Zavrsetak BETWEEN @PocetniDatum AND @KrajnjiDatum) AND (OperaterID = @OperaterID) AND (StatusId = 'LIVE') |
Ocigledno je da cu morati da ubacim u tabelu i kolonu Pocetak :)
|
Vreme je GMT +2. Trenutno vreme je 15:31. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.