MySQL выбирает все строки с этого года до определенного месяца с прошлого года - PullRequest
2 голосов
/ 29 апреля 2019

Я создаю систему для школы, которая должна получать данные с апреля этого года по июнь с прошлого года.

Мне нужен был запрос, который можно получить по этим датам в связи с их учебным годомначинается с июня и заканчивается в апреле.

Я попытался выбрать даты с помощью предложения 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'

Я хотел, чтобы это автоматически основывалось на том, какой сегодня год.

Так, например, сегодня 20 марта 2019 года. Я должен быть в состоянии вернуть все значения с этого дня до1 июня 2018 года

Ответы [ 2 ]

3 голосов
/ 29 апреля 2019

Ваш код может быть:

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); возврат на 1 июня текущего года
  • dateadded BETWEEN ? AND ? выберет все между from и to датами
  • pst.setObject(1, from); если вы используете JDBC 4+, вы можете установить LocalDate примерно так

Некоторые ссылки:

0 голосов
/ 29 апреля 2019

Ваш последний метод может быть настроен на работу с использованием этого подхода

SELECT * FROM students 
WHERE dateadded BETWEEN (CONCAT(YEAR(NOW()), '-06-01') - INTERVAL 1 YEAR) AND CURDATE() 
AND c_occupation = 'Student';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...