Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 6.007 pregleda

Najnovija ↓

SQL filter datuma 08.11.2009. u 23:40 · pre 206 meseci #1
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?

Potpis
Arduino Control Center
Re: SQL filter datuma 09.11.2009. u 09:40 · pre 206 meseci #3
koristiš ADO koliko vidim,
verovatno ćeš morati konvertovati datum
Re: SQL filter datuma 09.11.2009. u 15:40 · pre 206 meseci #4
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:(
Potpis
Arduino Control Center
Re: SQL filter datuma 09.11.2009. u 15:44 · pre 206 meseci #5
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.
Re: SQL filter datuma 09.11.2009. u 15:51 · pre 206 meseci #6
> 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;
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: SQL filter datuma 09.11.2009. u 16:08 · pre 206 meseci #7
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)

Re: SQL filter datuma 09.11.2009. u 16:18 · pre 206 meseci #8
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
Potpis
Arduino Control Center
Re: SQL filter datuma 09.11.2009. u 16:37 · pre 206 meseci #10
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.
Potpis
Arduino Control Center
Re: SQL filter datuma 09.11.2009. u 17:00 · pre 206 meseci #11
Access mislim da ne pozna CONVERT
Re: SQL filter datuma 09.11.2009. u 17:31 · pre 206 meseci #12
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...
Re: SQL filter datuma 09.11.2009. u 19:30 · pre 206 meseci
izmenjeno 2 puta, poslednji put lan-mi 09.11.2009. u 20:08
  1. lan-mi09.11.2009. u 20:08zapis iz teksta poruke
  2. lan-mi09.11.2009. u 20:07zapis iz teksta poruke
#13
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.
Potpis
Arduino Control Center
Re: SQL filter datuma 09.11.2009. u 21:06 · pre 206 meseci #14
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!
Potpis
Arduino Control Center
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme