使用java windows应用程序在mysql中获取两个日期之间的记录

时间:2015-09-11 05:34:51

标签: java mysql

我正在动态输入两个员工数据我得到两个表e1和e2,并且在那些表中我存储了特定员工的出勤率。参见下表,这里日期列类型是日期。两个表e1和e2,

    |------------------||-----------------|
    | date    | present|| date   | present|
    |2015-9-7 |  1     ||2015-9-7|  1     |
    |2015-9-8 |  1     ||2015-9-8|  0     |
    |2015-9-9 |  1     ||2015-9-9|  1     |

为了让员工出勤,我有一个文本字段来输入员工ID,我有两个下拉列表来选择日期,即“dayfrom”显示1,2..31和“monthfrom”显示Jan,Feb ... Dec和另外两个下拉列表“dayto”和“monthto”。

所以,我的代码是,

JTextField day1,day2,id;
Container c;
int t=0,in=0,re;
Integer mo1=new Integer(0);
Integer mo2=new Integer(0);
JButton sh,home,sha;
JLabel lday1,lday2,lid;
String tp;
String mo[]={"JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"};
int it[]=new int[100];
int ct[]=new int[100];
Choice dob1,dob2,add1,add2;
JOptionPane jp = new JOptionPane();
public emp()// constructor
{

    lid = new JLabel("Id :");  
    lid.setForeground(Color.black);
    lday1 = new JLabel("Day From :");  
    lday1.setForeground(Color.black);
    lday2 = new JLabel("Day To:");  
    lday2.setForeground(Color.black);

    id = new JTextField(); 
    id.setForeground(Color.black); 
    id.setBackground(Color.white);
    day1 = new JTextField(); 
    day1.setForeground(Color.black); 
    day1.setBackground(Color.white);
    day2 = new JTextField(); 
    day2.setForeground(Color.black); 
    day2.setBackground(Color.white);
    sh = new JButton("Show"); 
    sh.setForeground(Color.white); 
    sh.setBackground(new Color(128,0,0));
    dob1 = new Choice();
    dob2 = new Choice();
    dob1.add("1");
    dob1.add("2");
    dob1.add("3");
    dob1.add("4");
    dob1.add("5");
    dob1.add("6");
    dob1.add("7");
    dob1.add("8");
    dob2.add("JAN");
    dob2.add("FEB");
    dob2.add("MAR");
    dob2.add("APR");
    dob2.add("MAY");
    dob1.setBounds(190,150,40,20);
    dob2.setBounds(250,150,55,20);
    add1 = new Choice();
    add2 = new Choice();
    add1.add("1");
    add1.add("2");
    add1.add("3");
    add1.add("4");
    add1.add("5");
    add1.add("6");
    add1.add("7");
    add1.add("8");
    add2.add("JAN");
    add2.add("FEB");
    add2.add("MAR");
    add2.add("APR");
    add2.add("MAY");
    c.add(lid);
    c.add(lday1);
    c.add(lday2);
    c.add(id);
    c.add(sh);
    c.add(dob1);
    c.add(dob2);
    c.add(add1);
    c.add(add2);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);

}
public void actionPerformed(ActionEvent ae)
{   

    Object source = ae.getSource();
    if(source==sh)
    {
        re=0;
        if((id.getText()).length()!=0)
        {
        try
        {

            t=0;
            for(in=0;in<12;in++)
            {
                if(mo[in]==dob2.getSelectedItem())
                mo1=in+1;

            }
            ResultSet rs = stm.executeQuery("select * from e"+id.getText()+" where date_format(day,'%d')="+dob1.getSelectedItem()+" and date_format(day,'%m')="+mo1);
            while(rs.next())
            {   
                t=1;    
                re=rs.getInt("pre");
                if(re==1)
                jp.showMessageDialog(this,"Present";
                else
                jp.showMessageDialog(this,"Absent");
            }
            if(t==0)
            {
                jp.showMessageDialog(this,"Sorry, No Such Record exists");
                t=0;
            }

    }

}
但是在这里我得到输出“没有这样的记录存在”。

1 个答案:

答案 0 :(得分:0)

你可以直接简单地创建如下的mysql查询:

SELECT * FROM [TABLE NAME] WHERE DATE(date) BETWEEN 'yyyy-mm-dd' AND 'yyy-mm-dd'

它将为您提供所选员工的出勤列表。因此,您将从代码中创建Date格式化字符串,并将其传递给mysql查询。

希望它会对你有所帮助。