SQL语句-Java
我一直在尝试提出一些SQL语句来说明如何正确实现这一点,但运气不好。我在之间尝试了SQL语句-Java,sql,sqlite,date,jdbc,Sql,Sqlite,Date,Jdbc,我一直在尝试提出一些SQL语句来说明如何正确实现这一点,但运气不好。我在之间尝试了,=和=似乎你在试图重新发明轮子PreparedStatements就是为这个用例创建的——在预定义的结构中设置变量值。在您的情况下,使用该方法。从上下文来看,我猜您的fromDate和toDate变量都是实例,因此您必须将它们转换为s 您可以使用SimpleDataFormat获取一个字符串,该字符串的格式正确,可以用作SQLite中的日期,正确的格式为yyyy-MM-dd: String pattern = "
,=和=似乎你在试图重新发明轮子PreparedStatement
s就是为这个用例创建的——在预定义的结构中设置变量值。在您的情况下,使用该方法。从上下文来看,我猜您的fromDate
和toDate
变量都是实例,因此您必须将它们转换为s
您可以使用SimpleDataFormat
获取一个字符串,该字符串的格式正确,可以用作SQLite中的日期,正确的格式为yyyy-MM-dd
:
String pattern = "yyyy-MM-dd";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
String stringFromDate = dateFormat.format(fromDate.getDate());
-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入最有可能的是stringFromDate
和stringToDate
的格式不正确,这就是查询无法按预期工作的原因。更新并向我们显示正在执行的实际原始查询。还有,正在使用什么版本的SQL?@marc_s我正在查看您现在给我的链接。谢谢。@TimBiegeleisen我在用SQLite。谢谢我不明白的是,为什么其他月份的日子都是这样。我真的以为它起作用了,但后来这个。说到术语,我有点傻,我想把你要的东西告诉你,但恐怕你把我的话都说出来了。还是谢谢。:)向我们显示stringFromDate
和stringToDate
的文本值。这就解决了它!谢谢!我用了蒂姆的建议,效果很好。我也会记住这一点,并且会尝试下一个我要做的项目。谢谢
java.sql.Date fromDateToBind = new java.sql.Date(fromDate);
java.sql.Date toDateToBind = new java.sql.Date(toDate);
String query = "Select * from tblSavings where date between ? and ?";
try{
pstmt = conn.prepareStatement(query);
pstmt.setDate(1, fromDateToBind);
pstmt.setDate(2, toDateToBind);
rs = pstmt.executeQuery();
// use the results...
} // etc...
String pattern = "yyyy-MM-dd";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
String stringFromDate = dateFormat.format(fromDate.getDate());