Ошибка при передаче даты из MySQL в Java - PullRequest
0 голосов
/ 13 января 2019

У меня проблема с передачей дат из запроса 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. На практике время возвращается на один день.

Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...