【发布时间】:2016-07-07 07:01:59
【问题描述】:
我一直在尝试提出几个关于如何正确执行此操作的 SQL 语句,但没有成功。我试过between、>= and =<。基本上,我使用的 SQL 语句是有效的,但只是在一定程度上。
我的代码是这样工作的:用户将选择一个日期范围(从日期到日期),程序将检索并显示它在这些范围内的数据。就像我说的,它有效,但它也显示了其他月份的日子,我想显示的只是用户选择的那些特定日子。例如。从 2016 年 7 月 1 日到 2016 年 7 月 5 日。发生的事情是一年中的任何月份都会显示这些日期,这使得该特定方法有点没用。
任何帮助或任何解释为什么会这样。
下面是我的代码:
stringFromDate = sdf.format(fromDate.getDate());
stringToDate = sdf.format(toDate.getDate());
String query = "Select * from tblSavings where date between '" + stringFromDate+ "' and '" + stringToDate+"'";
try{
pstmt = conn.prepareStatement(query);
rs = pstmt.executeQuery();
tblList.setModel(DbUtils.resultSetToTableModel(rs));
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
stringFromDate和stringToDate的格式很可能不正确,这就是查询无法按预期工作的原因。更新并向我们展示正在执行的实际原始查询。另外,使用的是什么版本的 SQL? -
@marc_s 我正在查看您现在给我的链接。谢谢。
-
@TimBiegeleisen 我正在使用 SQLite。谢谢!我不明白为什么它会从其他月份开始。我真的认为它正在工作,但后来这个。说到术语,我有点白痴,我想给你你所问的,但我担心你把我说得一团糟。还是谢谢。 :)
-
向我们展示
stringFromDate和stringToDate的字面值。