2011-03-04 76 views
1

這是我的代碼傳遞java.sql.Date到SQL查詢

java.sql.Date d1=java.sql.Date.valueOf("2011-03-02"); 
java.sql.Date d2=java.sql.Date.valueOf("2011-03-10"); 
java.sql.Date systemDate=java.sql.Date.valueOf("2011-03-04"); 

String sql="select id from period where '"+systemDate+"' between '"+d1+"' and '"+d2+"'"; 

這是我的代碼的一部分。我想獲得這些日期之間的ID。但我沒有得到理想的結果。我回來了表中的所有ID。

回答

1

當您使用其他SQL工具(如PostgreSQL的pgadmin或SQL Developer for Oracle)時,您是否有良好的結果?

是這樣然後嘗試使用PreparedStatement。在你的情況下,這看起來像:

PreparedStatement pstmt = con.prepareStatement("select id from period where ? between ? and ?"); 
pstmt.setDate(1, systemDate); 
pstmt.setDate(2, d1); 
pstmt.setDate(3, d2); 
0

你沒有使用表中的字段與日期範圍進行比較。

你在做什麼是檢查04-03-2011是否在02-03-2011和10-03-2011之間,這對每個記錄都是正確的。

你想要做的是這樣的(假設起始是在你的表中的列):

String sql="select id from period where start_date between '"+d1+"' and '"+d2+"'"; 

(另外,我用上面準備好的語句的答案達成一致是一個更好的方式來構造查詢)