当前位置: 首页 > 知识库问答 >
问题:

如何根据今天的日期从表中提取10天后的数据

云新知
2023-03-14

我有搜索框的表格。我想在这个搜索框中输入今天的日期,并点击提交按钮后,我从数据库中获得10天的记录。我在table(table=issueDevices的名称)中有以下列。Device_ID、Employee_id、Employee_Name、Employee_Ext、Issue_Date

当我像下面这样编写查询时,pst=con.prepareStatement(“select*from issuedevices where Issue_Date='”+str+“'-INTERVAL'10'day”);

try 
          {
                   String str = tf5.getText();
                   Connection con=DB.getConnection();
                   PreparedStatement st = con.prepareStatement("select * from issuedevices where Issue_Date=?");
                 //  PreparedStatement st = con.prepareStatement("SELECT * FROM issuedevices WHERE Issue_Date > sysdate - INTERVAL '10' DAY;");

                   st.setString(1, str);
                   ResultSet rs=st.executeQuery();

             //       Vector v = new Vector();
               if (rs.next()) 
                    {
                         frame1 = new JFrame("Database Search Result");
                         frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                         frame1.setLayout(new BorderLayout());
                        //TableModel tm = new TableModel();
                         DefaultTableModel model = new DefaultTableModel();
                         model.setColumnIdentifiers(columnNames);
                         table = new JTable();
                         table.setModel(model);
                         table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
                         table.setFillsViewportHeight(true);
                           JScrollPane scroll = new JScrollPane(table);
                           scroll.setHorizontalScrollBarPolicy(
                                   JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                           scroll.setVerticalScrollBarPolicy(
                                   JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                 //  from = (String) c1.getSelectedItem();
                             String id = "";
                             String Device_ID = "";
                             String Employee_id = "";
                             String Employee_Name = "";
                             String Employee_Ext = "";
                             String Issue_Date= "";

                try {
                      //  pst = con.prepareStatement("select * from issuedevices where Issue_Date='" + str + "'");
                       pst = con.prepareStatement("select * from issuedevices where Issue_Date BETWEEN '" + str + "' - INTERVAL '11' DAY  AND '" + str + "'");
                       // pst = con.prepareStatement("select * from issuedevices where Issue_Date = '" + str + "'- INTERVAL '10' DAY");

                        ResultSet rs1 = pst.executeQuery();

                        int i = 0;
                        if (rs1.next())
                        {
                            id = rs1.getString("id");
                            Device_ID = rs1.getString("Device_ID");
                            Employee_id = rs1.getString("Employee_id");
                            Employee_Name = rs1.getString("Employee_Name");
                            Employee_Ext=rs1.getString("Employee_Ext");
                            Issue_Date=rs1.getString("Issue_Date");

                            model.addRow(new Object[]{id, Device_ID, Employee_id,Employee_Name,Employee_Ext,Issue_Date});
                            i++;
                        }
                        if (i < 1) 
                        {
                            JOptionPane.showMessageDialog(null, "No Record Found", "Error", JOptionPane.ERROR_MESSAGE);
                        }
                        if (i == 1) 
                        {
                            System.out.println(i + " Record Found");
                        }
                        else 
                        {
                            System.out.println(i + " Records Found");
                        }
                } 
                        catch (Exception ex)
                        {
                            JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                        }
                        frame1.add(scroll);
                        frame1.setVisible(true);
                        frame1.setSize(400, 300);
                    }

                    st.close();
                    rs.close();
          } 
          catch (Exception e) 
          {
              JOptionPane.showMessageDialog(null, "Name not Found");
          }

共有1个答案

庞阳波
2023-03-14
    pst = con.prepareStatement("select * from issuedevices where Issue_Date BETWEEN ? AND ?;");
    LocalDate today = LocalDate.now(ZoneId.of("Europe/Isle_of_Man"));
    pst.setObject(1, today.minusDays(10));
    pst.setObject(2, today);

不要手动构建查询字符串。使用参数。并且不将日期参数作为字符串传递,而是作为localdate对象传递。从代码中可以看到,localdate有一个减去10天(或任何其他天数)的方法。

链接:Oracle教程:日期时间,解释如何使用java.Time。

 类似资料:
  • 我试图通过以下查询获得日期。但没用。 我已经解析了用户输入日期,以'yyyy-mm-dd'格式存储到数据库中。帮我从所有记录中找出今天的生日日期。

  • 问题内容: 如何在Sparksql中获得一天,与mysql中相同。 问题答案: 算术函数使您可以对包含日期的列执行算术运算。 例如,您可以计算两个日期之间的差额,为日期添加天数或从日期中减去天数。内置的日期计算功能包括,, ,,, ,和。 我们需要的是 date_sub(时间戳记开始日期,整数天),用途:从TIMESTAMP值中减去指定的天数。第一个参数可以是字符串,如果它使用可识别的格式(如TI

  • 在GoogleSheets中,当a列中的日期等于或早于今天的日期时,我需要一个脚本来自动隐藏工作表1中的行。 因此,如果今天是2018年8月29日,单元格A3中的日期是2018年8月28日,则第3行的所有内容都将隐藏 但是如果A3单元格中的日期是2018年8月30日,那么所有第3行都将是可见的,直到当前日期是2018年8月31日。 谢谢你能提供的任何帮助。 我一直在使用这段代码,我发现它隐藏了行,

  • 获取今天的日期(年、月、日) 用法 Your browser does not support the video tag. 案例:小闹钟 功能:2019年12月25日,播放圣诞快乐歌

  • 问题内容: 我正在使用Selenium IDE 测试我的Web应用程序。在某些测试案例中,我必须断言今天的日期出现在页面上。我无法在测试中对今天的日期进行硬编码,因为今天的日期每天都在变化。如何获取Selenium IDE中的当前日期,月份和年份? 问题答案: 不知道您的日期采用什么格式,但是您可以执行以下操作:

  • 问题内容: 如何编写查询以获取今天的日期数据? 问题答案: 正确答案将取决于您的确切类型。假设它是类型: 如果是: