Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Firebird DB and java.sql.Date problem

ChangApr 5 2011 — edited Apr 6 2011
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
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 4 2011
Added on Apr 5 2011
5 comments
684 views