我正在為需要從去年 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 日的所有值
2 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
您的代碼可以是:
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 日dateadded BETWEEN ? AND ?
將選擇日期from
和to
日期之間的所有內容pst.setObject(1, from);
如果您使用的是 JDBC 4+,則可以LocalDate
這樣設置

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
可以使用這種方法使您的最后一種方法起作用
SELECT * FROM students WHERE dateadded BETWEEN (CONCAT(YEAR(NOW()), '-06-01') - INTERVAL 1 YEAR) AND CURDATE() AND c_occupation = 'Student';
添加回答
舉報
0/150
提交
取消