Java:将LocalDateTime保存到MySQL会持续减少7个小时

时间:2018-06-27 17:44:31

标签: java mysql datetime

我不知道为什么,但是每次我尝试将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;
}

0 个答案:

没有答案