Java: сохранение LocalDateTime в MySQL отнимает 7 часов - PullRequest
0 голосов
/ 27 июня 2018

Не знаю почему, но каждый раз, когда я пытаюсь сохранить LocalDateTime в MySQL, а затем пытаюсь просмотреть его, из него вычитается 7 часов. Например, когда я вставляю LocalDateTime.of(2018, 6, 28, 18, 30) и затем сохраняю его, когда получаю обратно из базы данных, он говорит 2018-06-28 11:30. Теперь я понимаю, что причина этого заключается в том, что я живу в Сиэтле, который находится в GMT-7. Чего я не знаю, так это как заставить это прекратить это делать. Я предполагаю, что у этого есть очень простое решение, но я не могу понять это.

- EDIT -

Вот код, который я использую для сохранения в базе данных.

public static int update(String tableName, String idColumnName, int id, Map<String, Object> newValues) {
    String sql = "UPDATE " + tableName + "\n"
               + "SET lastUpdate = " + convertDateToDBString(LocalDateTime.now()) + ",\n"
               + "lastUpdateBy = '" + activeUser.getUsername() + "'";

    for (Map.Entry<String, Object> newValue : newValues.entrySet()) {
          sql +=  ", \n" + newValue.getKey() + " = " + convertObjectToDBString(newValue.getValue());
    }
          sql += "\nWHERE " + idColumnName + " = " + id + ";";

    if (connected) {
        try {
            printSQL(sql);
            return statement.executeUpdate(sql);
        } catch (SQLException e) {
            printError(1111, "Could not run UPDATE query", e);
        }
    }
    return -1;
}

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

public static ResultSet query(String sql) {
    if (connected) {
        try {
            printSQL(sql);
            if (statement.execute(sql)) return statement.getResultSet();
        } catch (SQLException e) {
            printError(1110, "Could not run SELECT query", e);
        }
    }
    return null;
}

Не думаю, что это действительно поможет решить проблему, поэтому я не стал добавлять ее, но вы, ребята, просите об этом.

- РЕДАКТИРОВАТЬ -

Вот код для convertDateToDBString.

public static String convertDateToDBString(LocalDateTime datetime) {
    String dateString = "'" + Timestamp.valueOf(datetime) + "'";
    return dateString;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...