我不知道为什么,但是每次我尝试将LocalDateTime
保存到MySQL之后再尝试查看它时,已经从中减去了7个小时。例如,当我放入LocalDateTime.of(2018, 6, 28, 18, 30)
并从数据库中取出它进行保存时,它显示为2018-06-28 11:30
。现在,我知道这样做的原因是因为我住在GMT-7的西雅图。我不知道如何使它停止这样做。我猜这有一个非常简单的解决方案,但我似乎无法弄清楚。
-编辑-
这是我用来保存到数据库的代码。
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;
}