【发布时间】:2017-04-24 03:30:36
【问题描述】:
我正在为餐厅数据库程序创建一个 JDBC,用户可以在其中看到最近 7 天的利润报告。
我不知道如何选择最近 7 天,所以程序显示 7 天前的总利润。
我想知道如何实现这一点,我的代码如下所示:
public static void showSevenDaysAgoSells() {
double value = 0.0;
try {
System.out.println("----Showing last seven days profit----");
PreparedStatement stmt = conn.prepareStatement("SELECT sum(total) FROM sells WHERE date > date_from_7_days_ago");
java.sql.Date date= new java.sql.Date(new java.util.Date().getTime());
stmt.setObject(1, LocalDate.now(ZoneId.of("America/Caracas")).minusWeeks(1));
stmt.executeQuery();
ResultSet rs = stmt.executeQuery();
rs.next();
String sum = rs.getString(1);
value = Double.parseDouble(sum);
System.out.println("DAYS" + "\t" + "TOTAL");
System.out.println(date+ "\t" + sum);
} catch(Exception e) {
e.printStackTrace();
}
}
【问题讨论】:
-
只要使用
WHERE date > date_from_7_days_ago -
它给了我这个错误:org.postgresql.util.PSQLException: The column index is out of range: 1, number of columns: 0.
-
顺便说一句,我在发布之前看到了您在此处链接的帖子,它对我不起作用
-
这当然会失败,因为在您更新后准备好的语句没有
?占位符。使用WHERE date = ?,它应该会重新开始工作。 -
如果您使用的是 Java 8 和最新的 JDBC 驱动程序,您可以使用
setObject(1, LocalDate.now().minusDays(7))设置它并使用getObject(1, LocalDate.class)检索日期。最好不要依赖java.util.Date,如果可以避免它,它是子类。
标签: java sql postgresql date jdbc