Hello
I use a Fireball Database together with JDBC on Windows 7.
This is the code:
Connection l1con = DriverManager.getConnection(this.l1url, this.l1user, this.l1pw);
String query = "select distinct einspers.auftragnr, adressen.nummer, kunden.kundname, einspers.personalnr, " +
"einspers.einsortnr, einsort.bezeichn, einspers.bezeichn, personal.nachname, personal.vorname, " +
"datumvon, datumbis, personal.gebdatum, personal.gebort, adressen.strasse, adressen.plz, adressen.ort, " +
"kunden.kundennr , kunden.adrnr1, kunden.adrnr2, kunden.adrnr3 " +
"from einspers join einsort join personal join adressen join auftrag join kunden " +
"on einspers.auftragnr = einsort.auftragnr and einspers.einsortnr = einsort.einsortnr " +
"on einspers.personalnr = personal.personalnr " +
"on personal.adrnr1 = adressen.nummer " +
"on auftrag.auftragnr = einspers.auftragnr " +
"on kunden.kundennr = auftrag.kundennr " +
"where datumvon >= ? and datumbis <= ? " +
"and kunden.kundennr IN (110025) "
"order by einspers.auftragnr";
System.out.println("from " + start);
System.out.println("to " + stop);
System.out.println("from sql " + new java.sql.Date(start.getTime()));
System.out.println("to sql " + new java.sql.Date(stop.getTime()));
PreparedStatement stmt = l1con.prepareStatement(query);
stmt.setDate(1, new java.sql.Date(start.getTime()));
stmt.setDate(2, new java.sql.Date(stop.getTime()));
ResultSet rslt = stmt.executeQuery();
while(rslt.next())
{
if(rslt.getInt(1) == 23869)
{
System.out.println("contract job_no: " + rslt.getInt(1) + " " + rslt.getDate(10) + " " + rslt.getDate(11);
}
}
The output is
from Tue Mar 01 00:00:27 CET 2011
to Thu Mar 31 00:00:27 CEST 2011
from sql 2011-03-01
to sql 2011-03-31
contract job_no: 23869 2011-03-18 2011-03-18
But when I use the same query without the Date objects like this,
...
Connection l1con = DriverManager.getConnection(this.l1url, this.l1user, this.l1pw);
String query = "select distinct einspers.auftragnr, adressen.nummer, kunden.kundname, einspers.personalnr, " +
"einspers.einsortnr, einsort.bezeichn, einspers.bezeichn, personal.nachname, personal.vorname, " +
"datumvon, datumbis, personal.gebdatum, personal.gebort, adressen.strasse, adressen.plz, adressen.ort, " +
"kunden.kundennr , kunden.adrnr1, kunden.adrnr2, kunden.adrnr3 " +
"from einspers join einsort join personal join adressen join auftrag join kunden " +
"on einspers.auftragnr = einsort.auftragnr and einspers.einsortnr = einsort.einsortnr " +
"on einspers.personalnr = personal.personalnr " +
"on personal.adrnr1 = adressen.nummer " +
"on auftrag.auftragnr = einspers.auftragnr " +
"on kunden.kundennr = auftrag.kundennr " +
"where datumvon >= '2011-03-01' and datumbis <= '2011-03-31' " +
"and kunden.kundennr IN (110025) "
"order by einspers.auftragnr";
PreparedStatement stmt = l1con.prepareStatement(query);
//stmt.setDate(1, new java.sql.Date(start.getTime()));
//stmt.setDate(2, new java.sql.Date(stop.getTime()));
ResultSet rslt = stmt.executeQuery();
while(rslt.next())
{
if(rslt.getInt(1) == 23869)
{
System.out.println("contract job_no: " + rslt.getInt(1) + " " + rslt.getDate(10) + " " + rslt.getDate(11);
}
}
...
the output is
contract job_no: 23869 2011-03-01 2011-03-02
contract job_no: 23869 2011-03-18 2011-03-18
As you can see there is one result more than in the dynamic version with the date objects, but i cannot understand why. Is it a bug or am I blind?
Any help is appreciated!
Kind regards,
Chang