我想要获取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