SQL选择timestamp列在两个时间戳之间的位置

时间:2013-10-10 18:11:08

标签: java sql servlets timestamp

我试图获取一条SQL语句来选择时间戳在两个给定时间戳之间的行。这是我试过的。 (这是在Java servlet上,我是java时间戳对象

SELECT * FROM dates WHERE dateAvailable >= " + from.toString() + " AND dateAvailable <= " + to.toString();

其中from和to是时间戳对象 这在尝试准备语句时给出了语法错误,请帮助

2 个答案:

答案 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功能,否则无论如何都会产生奇怪的副作用。