[ KizaBG @ 04.03.2009. 11:14 ] @
| uh ....
u sql-i imam proceduru, koja za kriterijum datuma koristi
AND (@DatumOd IS null OR (
DATEPART(dd, u.[Datum]) >= DATEPART(dd, @DatumOd) AND
DATEPART(mm, u.[Datum]) >= DATEPART(mm, @DatumOd) AND
DATEPART(yyyy, u.[Datum]) >= DATEPART(yyyy, @DatumOd)))
AND (@DatumDo IS null OR (
(DATEPART(dd, u.[Datum]) <= DATEPART(dd, @DatumDo) AND
DATEPART(mm, u.[Datum]) <= DATEPART(mm, @DatumDo) AND
DATEPART(yyyy, u.[Datum]) <= DATEPART(yyyy, @DatumDo)))
i to je sve radilo OK.
onda sam pre par meseci uzeo da kastujem datum na formama (u pitanju je VS. Net 2005, Windows forms aplikacija) pa sam
1. u Program.cs fajlu dodao : Application.CurrentCulture = new System.Globalization.CultureInfo("en-us");
2. a na svim formama sam za datum stavio: Format: Custom , a custom format : mm-dd-yyyy ..
i sad mi ovo pretrazivanje u SQL-u ne vraca nista :((
pitanje: kako kastovati datume na formi, da uvek prikazuju datum u formatu mm-dd-yyyy, a a da mi ovo pretrazivanje ipak radi ?
10000 x thanks in advance
|
[ KizaBG @ 04.03.2009. 14:08 ] @
resio tako sto sam stavio @DatumOd <= Datum <= @DatumDo
jedino sto mi ne radi ok je .. ako imam zapis koji je napravljen npr. 20.marta.2009 , i ako u kriterijum pretrage (dataTime picker) stavim 20.mart.2009, nece uzeti u obzir zapis sa tim datumom, vec moram da stavim 21.mart.2009.
ali ok ...
[ mmix @ 04.03.2009. 14:16 ] @
A sto ne koristis BETWEEN?
WHERE Datum BETWEEN @DatumOd AND @DatumDo
[ KizaBG @ 04.03.2009. 14:31 ] @
Probao, ali opet ne daje dobar rezultat
WHERE ((@OsobaID IS null OR u.[OsobaID] = @OsobaID)
AND (@DatumOd IS null OR ( Datum BETWEEN @DatumOd AND @DatumDo ))
AND (@DatumDo IS null OR (Datum BETWEEN @DatumOd AND @DatumDo ))
pozdrav, hvala za pomoc
[ Zidar @ 04.03.2009. 16:57 ] @
datum je decimalni broj u stvari. Ako je tvoj Datum u bazi = '25 Feb 2008 14:50' onda ce ga pretraga tipa
SELECT .. WHERE datum <= '25 Feb 2008' promasiti. Zato sto je '25 Feb 2008 14:50' veci od '25 Feb 2008' . '25 Feb 2008' je u stvari '25 Feb 2008 00:00'
BETWEEN isto tako nece pomoci, cak je upotreba <= ,=> bolja nego BETWEEN u nekim slucajevima.
Verovatno negd eu procesu datum uzimas sa satima i minutima i zato ga WHERE promasi. Stavi u kriterijum ono +1 na DoDatuma i trebalo bi da proradi.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.