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

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


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


我尝试使用 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 日的所有值


三国纷争
浏览 87回答 2
2回答

泛舟湖上清波郎朗

您的代码可以是:LocalDate from = LocalDate.now().minusYears(1); // 2018-04-29LocalDate to = LocalDate.of(Year.now().getValue(), Month.JUNE, 1); // 2019-06-01String 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 日dateadded BETWEEN ? AND ?将选择日期from和to日期之间的所有内容pst.setObject(1, from);如果您使用的是 JDBC 4+,则可以LocalDate这样设置

慕村9548890

可以使用这种方法使您的最后一种方法起作用SELECT&nbsp;*&nbsp;FROM&nbsp;students&nbsp; WHERE&nbsp;dateadded&nbsp;BETWEEN&nbsp;(CONCAT(YEAR(NOW()),&nbsp;'-06-01')&nbsp;-&nbsp;INTERVAL&nbsp;1&nbsp;YEAR)&nbsp;AND&nbsp;CURDATE()&nbsp; AND&nbsp;c_occupation&nbsp;=&nbsp;'Student';
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java