0

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

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

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

4

2 回答 2

4

JDBC 对此有内置类型。利用

PreparedStatement ps = con.prepareStatement(
              "SELECT * FROM dates WHERE dateAvailable BETWEEN ? AND ?"); 
ps.setTimestamp(1, from);
ps.setTimestamp(2, to);

您指定两个?占位符。您可以将这些设置为您的TimeStamp元素。

因为它可能不会立即显而易见,所以使用它的一个目的PreparedStatement是它有助于防止 SQL 注入。在此处阅读答案以获取更多详细信息。


你的不工作的原因是它Timestamp#toString()有一种特定的格式,它不适用于 SQL。

于 2013-10-10T18:15:53.207 回答
-1

你必须使用 DATE 函数,否则无论如何你都会得到奇怪的副作用。

于 2013-10-10T18:16:44.507 回答