【问题标题】:How to get date of all days in past week? [duplicate]如何获取过去一周的所有日期? [复制]
【发布时间】: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
  • 我确实将它作为日期类型存储在我的数据库中,但我不知道如何处理日期。我认为无论如何它都会被放入一个准备好的语句中,所以无论是字符串还是日期都无关紧要。
  • 我建议你不要使用Calendarjava.sql.Date。这些课程设计不佳且早已过时。而是使用来自java.time, the modern Java date and time APILocalDate。我还建议您不要将字符串传递给数据库查询。也可以在那里使用LocalDate

标签: java date calendar


【解决方案1】:

你能尝试不同的方法吗?就像将今天的日期传递给 sql 过程并使用 where 子句在查询级别过滤过去 7 天?

说日期在哪里

【讨论】:

  • 问题是,如果日期是 1 日到 6 日,那么今天 - 7 可能会导致负数。
  • 将 dateadd() sql 函数与 -7 一起使用。检查这个stackoverflow.com/questions/42635297/…
  • 完美,dateadd() 工作。
  • 请注意,dateadd 用于 Microsoft SQL。使用 MySQL 的间隔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
相关资源
最近更新 更多