java:将localdatetime保存到mysql会减少7个小时

sr4lhrrt  于 2021-06-24  发布在  Mysql
关注(0)|答案(0)|浏览(257)

我不知道为什么,但每次我都想救一个孩子 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;
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题