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