Не знаю почему, но каждый раз, когда я пытаюсь сохранить 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;
}