[ lan-mi @ 08.11.2009. 22:40 ] @
Polje je u tabeli u formatu npr. '27.10.2009 11:30:00'

Odredjeni datum lako isfiltriram sa:

adoQuery.SQL.Text:= 'SELECT * FROM TABELA'+
'WHERE TABELA.DATUM like '+''''+datetostr(now)+'%''';

Kako najjednostavnije da isfiltriram sve datume manje od odredjenog datuma?

[ savkic @ 08.11.2009. 23:46 ] @
> Kako najjednostavnije da isfiltriram sve datume manje od odredjenog datuma?

WHERE DATUM < 01.01.2009
[ priki @ 09.11.2009. 08:40 ] @
koristiš ADO koliko vidim,
verovatno ćeš morati konvertovati datum
[ lan-mi @ 09.11.2009. 14:40 ] @
Pre nego sto sam se javio za pomoc, probao sam sve moguce kombinacije:
adoQuery2.SQL.Text:= 'SELECT * FROM TABELA '+
'WHERE TABELA.DATUM< '+''''+FormatDatetime('dd.mm.yyyy hh:nn:ss',now)+'''';
.. i sve varijacije formatiranja datuma, uvek izbaci gresku "Data type mismatch in criteria expression ". Ne znam u cemu gresim:(
[ stankons @ 09.11.2009. 14:44 ] @
Napravi upit u bazi, koju koristiš, i posle preseli isti format datuma u Delphi... Pokušaj tako... Ako ne bude išlo, reci nam koja baza je u pitanju, i daj nam upit koji ti radi u bazi.
[ savkic @ 09.11.2009. 14:51 ] @
> Pre nego sto sam se javio za pomoc, probao sam sve moguce kombinacije:
> . i sve varijacije formatiranja datuma, uvek izbaci gresku "Data type mismatch in criteria expression ". Ne znam u cemu gresim:(

Moraš saznati u kom formatu ta baza očekuje datum (YYYY-MM-DD; DD-MMM-YYYY; DD/MM/YY itd.)

Ili još lakše koristi parametre:

Query.Sql := 'SELECT * FROM TABELA WHERE DATUM < :Date';
Query.Prepare;
Query.Parmas[0].AsDateTime := Now;
Query.Open;
[ priki @ 09.11.2009. 15:08 ] @
nisam siguran ali mislim da će zbog drajvera za ADO najbolje rešenje biti SQL

Code:

SELECT * FROM TABELA WHERE DATUM < CONVERT(VARCHAR(10), <datum>, 104)

[ lan-mi @ 09.11.2009. 15:18 ] @
Upit pri startu programa koji radi OK:
adoquery.SQL.Text:='SELECT * FROM TABELA ORDER BY DATUM DESC'
Ovakav upit sortira podatke po datumu i vremenu.
Baza je Access *.mdb, komponente standardne TADOQuery i TAdoConnection,delphi 2009
[ lan-mi @ 09.11.2009. 15:20 ] @
Ovo sa parametrima mi ne ide bas iz prve. Probaću..
[ lan-mi @ 09.11.2009. 15:37 ] @
Probao sam ovako iako ne razumem upit:
adoQuery2.SQL.Text:='SELECT * FROM TABLE WHERE DATUM < CONVERT(VARCHAR(10), NOW(), 104)';

"Undefined function 'CONVERT' in expression" greška.
[ priki @ 09.11.2009. 16:00 ] @
Access mislim da ne pozna CONVERT
[ stankons @ 09.11.2009. 16:31 ] @
Access je malo striktan po određenim pitanjima, upit, mislim, mora da izgleda tačno ovako:

Code:

SELECT Table1.test
FROM Table1
WHERE (((Table1.test)=#11/11/2009#));


Znači, uslov za datum mora da bude tačno u datom obliku, nisam probao iz Delphi - a, trenutno, pretpostavljam da kad bi "ručno" kreirao SQL upit i ubacio ga u query da bi skoro sigurno radilo, ali preko parametara, nisam siguran kako...
[ lan-mi @ 09.11.2009. 18:30 ] @
Hm..
Kada upit postavim:
adoQuery2.SQL.Text:='SELECT * FROM TABELA WHERE DATUM < NOW()';

..radi.

Evo još jedan primer kada upit lepo radi, filtrirani su svi datumi manji od danasnjeg:

adoQuery2.SQL.Text:='SELECT * FROM TABELA WHERE DATUM < DATE() ORDER BY DATUM DESC';

.. ali nikako mi ne ide da umesto DATE() ubacim neki drugi datum.

[Ovu poruku je menjao lan-mi dana 09.11.2009. u 20:07 GMT+1]

[Ovu poruku je menjao lan-mi dana 09.11.2009. u 20:08 GMT+1]
[ lan-mi @ 09.11.2009. 20:06 ] @
Evo rešenja, hvala bogu.

Fiter svih datuma četiri dana manje od današnjeg:

adoQuery2.SQL.Text:= 'SELECT * FROM TABELA WHERE DATUM <'+FormatDatetime('#yyyy-mm-dd#',INCDAY(now,-4));

HVALA PUNO svima, jer mi svaka sugestija pomogla!