Newsgroup: it.comp.java
Titolo: query con le date

Ciao a tutti
sto cercando di fare una query su un database msde
connettendomi tramite jdbc,
la query sembra impostata bene, o meglio, "E' impostata bene"
perche' se la stessa query la faccio tramite un database access che
ho collegato al database suddetto, la risposta mi viene data corretta.
            La query incriminata
SELECT dataora,verso,idterminale FROM TIMBACCESSI WHERE
codicebadge='0023009999' and dataora LIKE '#*04/2004*#'
Il problema a quanto pare e' la data, perche' anche se faccio
          ................. and dataora = '#01/01/2004 8.30.00#'
Non mi restituisce nulla
Spero possiate aiutarmi
Grazie
Filippo
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 
Sinceramente non sono sicuro che funzioni sul tuo tipo di database ma
credo proprio di si...
Brevemente:
SELECT dataora,verso,idterminale FROM TIMBACCESSI WHERE
codicebadge='0023009999' and MONTH(dataora)=4 and YEAR(dataora)=2004;
Fammi sapere se funziona ;o)

 codicebadge='0023009999' and dataora LIKE '#*04/2004*#'
...e se provi ad eseguirla da un terminale?
non fidarti di access :)
A occhio il tuo problema non č legato a java, ma unicamente al fatto che 
  stai usando una sintassi Access su un db piů serio
A quanto mi ricordi (non uso piů da un po' SQLserver) la sintassi 
corretta dovrebbe essere tipo
... AND CONVERT(CHAR(10),DATAORA,3) like '%/04/2004'
altrimenti, invece di convertire tutto in stringa con il like, puoi fare 
il confronto tra date con
... AND DATAORA BETWEEN CONVERT(DATE,'01/04/04',3) AND 
CONVERT(DATE,'31/04/04',3)
(3 č oň formato dd/mm/yy non ricordo quale č il dd/mm/yyyy)
oppure, se ti interessa sempre e solo il mese, potresti fare
... AND DATEPART(month, DATAORA) = 4 AND DATEPART(year, DATAORA) = 2004
Se effettivamente il tuo problema č questo, consiglio una letta alla 
sintassi del TSQL
Considera che potrei ricordare male
Saluti,
	Giorgio

 
...avete appena visto una pura dimostrazione di come sputare nel piatto in
cui si mangia...
Gran parte della fatica nel comporre query puň essere risparmiata delegando
al driver JDBC tutto il lavoro sporco.
Una query come la tua puň essere creata ed eseguita molto piů semplicemente
utilizzando le query parametriche. Segue un esempio di codice Java adatto al
tuo caso:
(supponiamo che "conn" sia la tua connessione al db)
--------------------------------
import java.sql.*;
import java.util.GregorianCalendar;
//Precompiliamo la query...
PreparedStatement ps = conn.prepareStatement("SELECT dataora,verso,idterminale FROM TIMBACCESSI WHERE codicebadge=? AND dataora>? AND dataora<?");
//notare i "?" al posto dei valori nelle WHERE
//Creiamo ora gli oggetti in grado di rappresentare l'arco di 24 ore
//su cui eseguire la ricerca
TimeStamp timeFrom =
  new TimeStamp(new GregorianCalendar(2004,1,1,0,0,0).getTimeInMillis());
TimeStamp timeFrom =
  new TimeStamp(new GregorianCalendar(2004,1,1,23,59,59).getTimeInMillis());
//Impostiamo i parametri della query
ps.setString(1,"0023009999"); //č una stringa, se non ricordo male
ps.setTimeStamp(2,timeFrom);  //01/01/2004 00:00:00
ps.setTimeStamp(3,timeTo);    //01/01/2004 23:59:59
//Eseguiamo la query
ResultSet rset=ps.executeQuery();
//Fai quello che devi fare con i risultati
......
//Ricordati di chiudere il ResultSet quando hai finito di consultarlo
rset.close();
//Volendo puoi impostare dei nuovi parametri alla tua query per poi
//rieseguirla (e qui avresti il massimo delle prestazioni del tuo DB Engine)
//E infine facciamo un po' di pulizie chiudendo la PreparedStatement
ps.close();
--------------------------------
Insomma... lascia che sia il driver a trovare la forma piů adatta ad
esprimere i parametri per la query, tu preoccupati solo di passargli i dati
giusti (funziona anche con le stringhe con apostrofo ;))
Un suggerimento: le query parametriche possono essere usate anche in INSERT,
DELETE e UPDATE... 'nzomma ovunque ci sia una sezione WHERE.
L'unica cosa che non puoi parametrizzare sono i nomi delle colonne e delle
tabelle su cui č basata la query... ma a quello ci pensi con un bel
concatenamento di stringhe, no?
Fammi sapere come va
-- 
Fermiamo Scientology prima che sia troppo tardi!!!
http://xenu.com-it.net
  ---  
http://xenu.freewinds.cx
(per rispondere personalmente leva IlDitoDalCulo)