2010-08-30 52 views
1

我正在使用ms访问数据库。我需要按日期获得销售。 这里是我的表规格:如何在java中获得按日期销售?

BILL_NO DATE  SALE 
1  8/30/2010 1000 
2  8/30/2010 2000 
3  8/31/2010 3000 
4  8/31/2010 2000 

如果我想出售8/31/2010它应该返回5000

我一直在使用java.sql.Date对象在数据库插入日期值。

回答

2

注意到应当是DATE是在MS Access一个reserved keyword。你需要用大括号来指定它。此外,您希望使用SimpleDateFormat将人类可读的日期字符串转换为完整的java.util.Date对象,然后您可以构建一个java.sql.Date,而该对象又可以通过常规方式设置为PreparedStatement

这里有一个开球:

String sql = "SELECT SUM(SALE) as TOTAL_SALE FROM tbl WHERE [DATE] = ? GROUP BY [DATE]"; 
java.util.Date date = new SimpleDateFormat("MM/dd/yyyy").parse("8/31/2010"); 

Connection connection = null; 
PreparedStatement statement = null; 
ResultSet resultSet = null; 
int totalSale = 0; 

try { 
    connection = database.getConnection(); 
    statement = connection.prepareStatement(sql); 
    statement.setDate(new java.sql.Date(date.getTime()); 
    resultSet = statement.executeQuery(); 
    if (resultSet.next()) { 
     totalSale = resultSet.getInt("TOTAL_SALE"); 
    } 
} finally { 
    close(connection, statement, resultSet); 
} 
+0

其工作正常... 感谢名单.. PLZ u能告诉我,如果我想找到每周每月每年销售我怎么能做到这一点? – Pratik 2010-08-30 21:31:39

+1

不客气。不要忘记标记接受的答案。对于新问题,您应该提出一个新问题,但我会给您一个提示:读取由DB提供的SQL日期/时间函数。 MS访问特定文档可在[here](http://www.techonthenet.com/access/functions/)中找到。在页面的中间部分有一段*日期功能*。点击您的方式查找信息和示例。 – BalusC 2010-08-30 21:36:25

0
select 
    sum(SALE) as TOTAL_SALE 
from 
    tbl 
where 
    DATE='8/31/2010' 
group by 
    DATE 
0
Select sum(SALE) from [your table name] where Format([DATE],"mm/dd/yyyy")='08/30/2010';