Java 如何根据今天的日期从表中提取10天的数据
我有表格where is search box。我想在这个搜索框中输入今天的日期并点击submit按钮后,我从数据库中获得10天的返回记录。我在表中有以下列(表名=IssuedDevices)。 设备ID、员工ID、员工姓名、员工Ext、发布日期 当我使用以下查询并输入“issue\u date”列中的日期以获取该日期的记录时。Java 如何根据今天的日期从表中提取10天的数据,java,mysql,sql,date,days,Java,Mysql,Sql,Date,Days,我有表格where is search box。我想在这个搜索框中输入今天的日期并点击submit按钮后,我从数据库中获得10天的返回记录。我在表中有以下列(表名=IssuedDevices)。 设备ID、员工ID、员工姓名、员工Ext、发布日期 当我使用以下查询并输入“issue\u date”列中的日期以获取该日期的记录时。 pst=con.prepareStatement(“从发布设备中选择*,其中发布日期=”+str+”) 当我像下面这样写查询时,什么都没有发生 pst=con.prep
pst=con.prepareStatement(“从发布设备中选择*,其中发布日期=”+str+”) 当我像下面这样写查询时,什么都没有发生
pst=con.prepareStatement(“从发布设备中选择*,其中发布日期=”“+str+”-间隔“10”天”)
试试看
{
字符串str=tf5.getText();
Connection con=DB.getConnection();
PreparedStatement st=con.prepareStatement(“从发布设备中选择*,其中发布日期=?”;
//PreparedStatement st=con.prepareStatement(“从发布设备中选择*,其中发布日期>系统日期-间隔“10”天;”);
st.setString(1,str);
结果集rs=st.executeQuery();
//向量v=新向量();
如果(rs.next())
{
frame1=新的JFrame(“数据库搜索结果”);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setLayout(新的BorderLayout());
//TableModel tm=新的TableModel();
DefaultTableModel=新的DefaultTableModel();
model.setColumnIdentifiers(columnNames);
table=新的JTable();
表2.setModel(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
表.setFillsViewPerthweight(真);
JScrollPane scroll=新的JScrollPane(表);
scroll.setHorizontalScrollBarPolicy(
JScrollPane.水平滚动条(根据需要);
scroll.setVerticalScrollBarPolicy(
JScrollPane.垂直滚动条(根据需要);
//from=(字符串)c1.getSelectedItem();
字符串id=“”;
字符串设备_ID=“”;
字符串Employee_id=“”;
字符串Employee_Name=“”;
字符串Employee_Ext=“”;
字符串Issue_Date=“”;
试一试{
//pst=con.prepareStatement(“从发布设备中选择*,其中发布日期=“+str+””);
pst=con.prepareStatement(“从发布设备中选择*,其中发布日期介于“+str+”—间隔“11”天和“+str+”””);
//pst=con.prepareStatement(“从发布设备中选择*,其中发布日期=”“+str+”-间隔“10”天”);
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”);
addRow(新对象[]{id,设备id,员工id,员工姓名,员工Ext,发布日期});
i++;
}
if(i<1)
{
showMessageDialog(null,“未找到记录”,“错误”,JOptionPane.Error\u消息);
}
如果(i==1)
{
System.out.println(i+“找到记录”);
}
其他的
{
System.out.println(i+“找到记录”);
}
}
捕获(例外情况除外)
{
showMessageDialog(null,例如getMessage(),“Error”,JOptionPane.Error_MESSAGE);
}
frame1.添加(滚动);
frame1.setVisible(true);
框架1.设置尺寸(400300);
}
圣克洛斯();
rs.close();
}
捕获(例外e)
{
showMessageDialog(null,“未找到名称”);
}
您正在将查询参数绑定为字符串:
st.setString(1, str);
考虑将其绑定为日期:
st.setDate(1, new SimpleDateFormat("YYYY-MM-DD HH:mm:ss").parse(str));
当然,使用你想要的
您也可以在数据库中进行转换,保留java代码不变,但修改查询:
select * from issuedevices where Issue_Date=STR_TO_DATE(?, "%M %d %Y");
另外考虑将日期与范围进行比较(不要使用“=”,而是使用“>”)< /P> < p>您将绑定查询参数绑定为字符串:
st.setString(1, str);
考虑将其绑定为日期:
st.setDate(1, new SimpleDateFormat("YYYY-MM-DD HH:mm:ss").parse(str));
当然,使用你想要的
您也可以在数据库中进行转换,保留java代码不变,但修改查询:
select * from issuedevices where Issue_Date=STR_TO_DATE(?, "%M %d %Y");
考虑将日期与范围进行比较(不要使用“=”,而是使用“>”)< /P> JavaTimes和JDBC 4.2 不要手工生成查询字符串。使用参数。不要将日期参数作为字符串传递,而是作为
LocalDate
对象传递。从代码中可以看出,LocalDate
有一种减去10天(或任何其他天数)的方法
链接:解释如何使用java.time。java.time和JDBC