Newsgroup: it.comp.lang.delphi
Titolo: query su campi di tipo date

Ciao a tutti.
Mi sarò forse rincoglionito, ma ho un problema (immagino scemo) da cui non
riesco a uscire.
Ho una tabella di prova (IB6), con 3 campi: id, nome, e data (quest'ultimo
di tipo date).
Lo statement SQL è qualcosa tipo: select * from table where
data='12/02/2004'.
Naturalmente, la data usata è presente in piu record all'interno della
tabella.
Eppure, la query non ritorna mai alcun valore.
Che succede?
Grazie a tutti,
A.

Non sarà micca che devi convertire il valore nel tipo datetime.
Ciao
Mario
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Non sarà micca che devi convertire il valore nel tipo datetime.
Per carità... non va nemmeno a sassate (e, crisbio, sta cosa mi fa stranire
non poco)...
Tra l'altro, il valore con cui fare il paragone dentro alla query lo prendo
direttamente da un DateTimePicker
(i.e.: AnsiString Query="select from table where
data='"+DateTimePicker1->Date+"'").
Invito tutti a farmi capire che cosa c'è di sbagliato in questa query, per
poi insultarmi senza ritegno :-)
Grazie ancora,
A.

 query, per poi insultarmi senza ritegno :-)
E' quasi sempre opportuno passare le date con dei parametri, in modo che
ci pensi il componente a formattarle come il gestore sottostante
preferisce; quindi:
qry.sql.text := 'Select <fieldList> from <tablename> ' +
    ' where <DateFieldName> = :dateParam;';
qry.ParamByName('DateFieldName').AsDateTime := aDateValue;
qry.Open;
In alternativa, con IB dovrebbe andare un formato tipo:
QuotedStr(FormatDateTime('yyyy-mm-dd'))
Saluti
Paolo Arosio
-- 
"La dimostrazione dell'esistenza di specie intelligenti nell'universo
 e' che non ci vengono a trovare" [Calvin & Hobbes]

 query, per poi insultarmi senza ritegno :-)
E' quasi sempre opportuno passare le date con dei parametri, in modo che
ci pensi il componente a formattarle come il gestore sottostante
preferisce; quindi:
qry.sql.text := 'Select <fieldList> from <tablename> ' +
    ' where <DateFieldName> = :dateParam;';
qry.ParamByName('dateParam').AsDateTime := aDateValue;


 data='"+DateTimePicker1->Date+"'").
Oltre ai saggi suggerimenti di Paolo Arosio, considera che il DateTimePicker
con la proprietà Date ti ritorna comunque anche il "Time".
Esempio:
  ShowMessage(DateTimeToStr(DateTimePicker1.Date));
Questo perchè sia TDate che TDateTime alla fine dei conti sono due Double...
La cosa saggia sarebbe ripulire la parte frazionaria di quel double e tenere
solo la data ma comunque un confronto così secco su un campo io starei
attento a farlo.
Ciao e HTH
--
Andrea /\/\agni - ICQ#: 174108000
http://www.delphiedintorni.it

 A.
Ciao
Giorgio

 data='02/12/2004'.
funziona in questo modo ed anche come suggerito da Paolo Arosio
In alternativa, con IB dovrebbe andare un formato tipo:
QuotedStr(FormatDateTime('yyyy-mm-dd'))
quale è il metodo corretto ??
ciao

Io avevo lo sesso tuo problema ed ho risolto così.
Query1.SQL.Clear;
Query1.SQL.Add ('select * from pippo.db');
Query1.SQL.Add ('where Data<= :Data');
Query1.ParamByName('Data').AsDate := Date;
Query1.Open;
Vincenzo Di Falco

 Io avevo lo sesso tuo problema ed ho risolto cosě.
[CUT]
Grazie a tutti.
I vostri consigli sono stati molto preziosi.
A presto,
A