java - MySQL选择从今年到去年特定月份的所有行

标签 java mysql sql date jdbc

我正在为一所学校创建一个系统,该系统需要检索从今年 4 月到去年 6 月的数据。

我需要一个可以从此日期检索的查询,因为他们的学年总是从 6 月开始到 4 月结束。

我尝试使用 Where 子句选择日期。

"SELECT * FROM students WHERE year(c_date) = ? AND month(c_date) = ? AND c_occupation = 'Student'"

问号用于java语言,它使用这段代码准备语句

pst=conn.prepareStatement(Sql);
            pst.setInt(1, year);
            pst.setInt(2, month);

我也试过这个方法,但是这样,我需要在一年过去后再次输入日期。

SELECT users.* FROM users 
WHERE dateadded <= '2019-06-01' 
AND dateadded >= '2018-4-30'

我希望它根据今天的年份自动生成。

例如,今天是 2019 年 3 月 20 日。 我应该能够返回从这一天到 2018 年 6 月 1 日的所有值

最佳答案

您的代码可以是:

LocalDate from = LocalDate.now().minusYears(1); // 2018-04-29
LocalDate to = LocalDate.of(Year.now().getValue(), Month.JUNE, 1); // 2019-06-01

String sql = "SELECT * FROM students WHERE dateadded BETWEEN ? AND ? AND c_occupation = 'Student'";
pst = conn.prepareStatement(Sql);
pst.setObject(1, from);
pst.setObject(2, to);

  • LocalDate.now().minusYears(1);返回去年同一天
  • LocalDate.of(Year.now().getValue(), Month.JUNE, 1); 返回当年的 6 月 1 日
  • 添加日期 BETWEEN ? AND ? 将选择 fromto 日期之间的所有内容
  • pst.setObject(1, from); 如果您使用的是 JDBC 4+,您可以像这样设置一个 LocalDate

一些引用:

关于java - MySQL选择从今年到去年特定月份的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55909013/

相关文章:

java - 带有非可选参数的基于 Quarkus 注释的拦截器

java - 使用 eclipse 和 maven 2,如何获取 sqljdbc4 的依赖项?

sql - 使用评分在 SQL 中查找最佳匹配

MySQL - 从列中获取最大值,然后存储在变量中

sql - 如何在没有联合条款的情况下进行优化?

java - 本地主机上的 JBoss 服务器连接被拒绝 :1099

java - maven和gradle可以和本地仓库共享同一个文件夹吗?

python - 通过 MySQLdb 使用 Python 插入 MySQL 数据库

MySQL 查询字符串仅包含一次逗号

mysql - mysql中如何比较三个表的值