在sql中计数函数

时间:2012-11-09 15:16:03

标签: java sql

account_id    current_balance  opening_date
1             100              2012-03-01
2             100              2012-4-01 
3             100              2013-03-1

现在当我在sql工作台运行查询时,它很好

select count(acc.account_id) 
from daily_account acc 
where acc.opening_date < '2013-03-01'

但是当我在NetBeans中运行它时,它没有提供正确的输出。

select count(acc.account_id) 
from daily_account acc 
where acc.opening_date < '"+ new Date((Integer.parseInt(FromYearComboBox.getSelectedItem().toString())-1900),FromMonthComboBox.getSelectedIndex(),Integer.parseInt(FromDateComboBox.getSelectedItem().toString()))).toString()

任何人都可以帮助我为什么会这样?

编辑:

rs = st.executeQuery("select count(acc.account_id) from daily_account
acc where  acc.opening_date < '"+ new
Date((Integer.parseInt(FromYearComboBox.getSelectedItem().toString())-1900),FromMonthComboBox.getSelectedIndex(),(Integer.parseInt(FromDateComboBox.getSelectedItem().toString()))).toString()+"';");

rs.next();

tabledata[0][2]=rs.getString(1);
  

编辑::    它给了我错误的答案......它正在计算所有账号...

1 个答案:

答案 0 :(得分:1)

你似乎最后还有一个结束括号)toString())))。应该少一个,例如。

  

从daily_account acc中选择count(acc.account_id),其中acc.opening_date&lt; '“+ new Date((Integer.parseInt(FromYearComboBox.getSelectedItem()。toString()) - 1900),FromMonthComboBox.getSelectedIndex(),Integer.parseInt(FromDateComboBox.getSelectedItem()。toString()))。toString() + “'”;

一个注释这实际上使您的查询字符串变得复杂。尝试先构建日期字符串,然后在查询中附加。

另一个注意: Date带参数的构造函数已弃用,而且您似乎确实不需要日期而是字符串。在这种情况下,你为什么不写一些简单的东西:

 String dateStr = 
      String.valueOf(Integer.parseInt(
                              FromYearComboBox.getSelectedItem().toString())-1900)
  + FromMonthComboBox.getSelectedIndex()
  +FromDateComboBox.getSelectedItem().toString();

String queryStr = "select count(acc.account_id) from daily_account acc "+
                  " where acc.opening_date < '"+ dateStr +"'";