我想要獲取SQL語句以選擇時間戳在兩個給定時間戳之間的行。這是我的嘗試。 (這是一個Java servlet,我的Java時間戳對象SQL選擇時間戳列在兩個時間戳之間
SELECT * FROM dates WHERE dateAvailable >= " + from.toString() + " AND dateAvailable <= " + to.toString();
,其中來自並有時間戳對象 這是給我嘗試準備語句時,語法錯誤,請幫忙
我想要獲取SQL語句以選擇時間戳在兩個給定時間戳之間的行。這是我的嘗試。 (這是一個Java servlet,我的Java時間戳對象SQL選擇時間戳列在兩個時間戳之間
SELECT * FROM dates WHERE dateAvailable >= " + from.toString() + " AND dateAvailable <= " + to.toString();
,其中來自並有時間戳對象 這是給我嘗試準備語句時,語法錯誤,請幫忙
JDBC有內置類型此。使用
PreparedStatement ps = con.prepareStatement(
"SELECT * FROM dates WHERE dateAvailable BETWEEN ? AND ?");
ps.setTimestamp(1, from);
ps.setTimestamp(2, to);
您指定兩個?
佔位符。您可以將這些設置爲您TimeStamp
元素。
因爲它可能不會立即顯而易見,所以使用PreparedStatement
的一個目的是幫助防止SQL注入。閱讀答案here瞭解更多詳情。
你不工作的原因是,Timestamp#toString()
具有不與SQL工作特定的格式。
+1,但我也會說_why_最好使用這個實現,而不是直接用字符串連接構建查詢:) – BackSlash
@BackSlash當然,添加到其他問題/答案的鏈接。 –
你必須使用DATE函數,否則你會得到奇怪的副作用。
**附註**:這種查詢方式對於SQL注入極其脆弱。使用[Prepared Statements](準備好的語句)(http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)向查詢中添加值,而不是將它們連接在一個字符串中。 – BackSlash