У меня проблема с передачей дат из запроса MySQL в Java с помощью функции CreateSQLQuery.
В частности, у меня есть этот запрос:
SQLQuery query = session.createSQLQuery("SELECT DISTINCT year(data_inizio_commessa_utente) as anno_inizio_commessa, month(data_inizio_commessa_utente) as mese_inizio_commessa, "
+ "ifnull(year(data_fine_commessa_utente), year(current_date)) as anno_fine_commessa, ifnull(month(data_fine_commessa_utente), month(current_date)) as mese_fine_commessa "
+ "FROM rel_utenti_commesse WHERE (year(data_inizio_commessa_utente) = '" + anno + "' or year(data_fine_commessa_utente) = '" + anno + "' or '" + anno + "' between year(data_inizio_commessa_utente) and year(data_fine_commessa_utente)) and "
+ "fk_id_utente = '" + id_utente + "'")
.addScalar("anno_inizio_commessa", new IntegerType())
.addScalar("mese_inizio_commessa", new IntegerType())
.addScalar("anno_fine_commessa", new IntegerType())
.addScalar("mese_inizio_commessa", new IntegerType());
List<Object[]> resultSet = query.list();
for(int i = 0; i < resultSet.size(); i++) {
int anno_inizio_commessa = Integer.parseInt(resultSet.get(i)[0].toString());
int mese_inizio_commessa = Integer.parseInt(resultSet.get(i)[1].toString());
int anno_fine_commessa = Integer.parseInt(resultSet.get(i)[2].toString());
int mese_fine_commessa = Integer.parseInt(resultSet.get(i)[3].toString());
System.out.println(anno_inizio_commessa);
System.out.println(mese_inizio_commessa);
System.out.println(anno_fine_commessa);
System.out.println(mese_fine_commessa);
}
Теперь для системы вывод такой:
2018
11
2019
11
2019
1
2019
1
Но если я выполню запрос на MySQL, результат будет следующим:
--------------------------------------------------
## anno1 ## ## mese1 ## ## anno2 ## ## mese2 ##
2018 11 2019 1
2019 1 2019 2
--------------------------------------------------
Та же самая ошибка происходит со мной, когда я пытаюсь напечатать вывод даты в формате (ГГГГ-ММ-ДД).
В частности, если у меня есть дата 2018-01-01 в базе данных, после выполнения .toString () ячейки я выхожу в 2017-12-31.
На практике время возвращается на один день.
Почему?