我试图获取一条SQL语句来选择时间戳在两个给定时间戳之间的行。这是我试过的。 (这是在Java servlet上,我是java时间戳对象
SELECT * FROM dates WHERE dateAvailable >= " + from.toString() + " AND dateAvailable <= " + to.toString();
其中from和to是时间戳对象 这在尝试准备语句时给出了语法错误,请帮助
答案 0 :(得分:4)
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 :(得分:-1)
你必须使用DATE功能,否则无论如何都会产生奇怪的副作用。