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);
编辑:: 它给了我错误的答案......它正在计算所有账号...
答案 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 +"'";