【发布时间】:2019-02-11 16:21:11
【问题描述】:
我有一个应用程序,每个星期天,它都会检查 MySQL 数据库中过去一周的数据。我试图找出如何获取过去一周中每一天的日期字符串。我明显的第一次尝试是:
Calendar calendar = Calendar.getInstance();
if(calendar.DAY_OF_WEEK == 7){
java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());
String dates[] = new String[7];
for(int i; i < 7; i++){
dates[i] = date.substring(0,7) + date.substring(7, date.length());
}
// Now grab data from the database where the date corresponds with one of these.
}
今天,这会奏效。但是,如果是一个月的 1 号到 6 号,这将不起作用,因为它不会考虑月份的变化。有没有办法解决这个问题。我敢肯定有人做过类似的事情。谢谢。
【问题讨论】:
-
如果您的数据以日期类型存储在数据库中,那么您应该避免在查询中使用
Strings 来表示它们,而倾向于PreparedStatements 将值绑定到参数。如果数据未存储为日期类型 - 那么您手头的问题就会大得多。您还应该考虑使用 Java 8+ 中提供的新的和改进的日期/时间 API -
我确实将它作为日期类型存储在我的数据库中,但我不知道如何处理日期。我认为无论如何它都会被放入一个准备好的语句中,所以无论是字符串还是日期都无关紧要。
-
我建议你不要使用
Calendar和java.sql.Date。这些课程设计不佳且早已过时。而是使用来自java.time, the modern Java date and time API 的LocalDate。我还建议您不要将字符串传递给数据库查询。也可以在那里使用LocalDate。