Java中的MySQL-插入设置时间戳-改为插入当前时间?

Java中的MySQL-插入设置时间戳-改为插入当前时间?,java,mysql,datetime,timestamp,Java,Mysql,Datetime,Timestamp,我在从java向数据库中插入一些时间戳时遇到了问题。我正在从API收集天气预报,然后将这些值插入我的数据库。就历史价值而言,它工作完全正常,没有错误或问题 但是,当我尝试插入未来值时,对于某些数据,它将使用当前时间和日期而不是设置值插入。我试着打印出所有的最终声明,但没有任何问题。有人看到问题了吗 String sqlCheck = "select * from weatherforecast where datetime = '" + timestamp

我在从java向数据库中插入一些时间戳时遇到了问题。我正在从API收集天气预报,然后将这些值插入我的数据库。就历史价值而言,它工作完全正常,没有错误或问题

但是,当我尝试插入未来值时,对于某些数据,它将使用当前时间和日期而不是设置值插入。我试着打印出所有的最终声明,但没有任何问题。有人看到问题了吗

String sqlCheck = "select * from weatherforecast where datetime = '"
                    + timestamp + "' and stationID = " + stationID;
            PreparedStatement p = conn.prepareStatement(sqlCheck);
            ResultSet r = p.executeQuery();
            if (r.next()){
                String query = "update weatherforecast set precipitation = ? and temperature = ? and stationID = ? where datetime = ?";
                  PreparedStatement preparedStmt = conn.prepareStatement(query);
                  preparedStmt.setDouble   (1, o.getRain());
                  preparedStmt.setDouble(2, o.getTemp());
                  preparedStmt.setInt(3, stationID);
                  preparedStmt.setTimestamp(4, timestamp);
                  preparedStmt.executeUpdate();
            } else {
                p1.setTimestamp(1, timestamp);
                p1.setDouble(2, o.getRain());
                p1.setDouble(3, o.getTemp());
                p1.setInt(4, stationID);
                p1.execute();
            }
我还添加了一些thread.sleep(2000),看看这是否解决了这个问题,但是运气不好。 我知道时间戳的格式是正确的,因为相同的代码用于过去的数据。它还为未来的日期插入了新数据,这是完全正确的:

“5800”、“2015-04-02 12:00:00”、“0”、“9”、“25”

“6204”、“2015-04-02 12:00:00”、“0”、“8”、“21”

“6356”、“2015-04-02 12:00:00”、“0”、“8”、“26”

“6386”,“2015-04-02 10:06:19”,“0”,“11”,“1”

“6396”,“2015-04-02 10:06:19”,“0”,“8”,“2”

“6422”,“2015-04-02 10:06:19”,“0”,“10”,“14”

“6447”,“2015-04-02 10:06:19”,“0”,“6”,“16”

此处底部四个的日期时间值为“2015-04-02 09:00:00” (插入数据的时间为10:06:19)

提前谢谢

编辑

这里是时间戳值的声明(API存储所需时间的方式,因此解释if语句)

观察的日期部分以以下格式存储:

“日期”:“2015-04-05”

编辑2:

Timestamp timestamp = null;

            if (o.getTime().equals("300")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 03:00:00.0");

            } else if (o.getTime().equals("0")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 00:00:00.0");

            } else if (o.getTime().equals("600")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 06:00:00.0");

            } else if (o.getTime().equals("900")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 09:00:00.0");

            } else if (o.getTime().equals("1200")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 12:00:00.0");

            } else if (o.getTime().equals("1500")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 15:00:00.0");

            } else if (o.getTime().equals("1800")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 18:00:00.0");

            } else if (o.getTime().equals("2100")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 21:00:00.0");

            }

我们需要了解时间戳是什么-您能在问题中包括它的声明/初始化吗?您的select查询准备好了吗?插入数据中的时间未设置为21:00这一事实意味着
if
条件可能已评估为
false
。这里还有什么其他条件,什么是
o
,它是如何检索的?我很确定select查询正在工作,因为它没有插入以前运行的代码中的任何重复值。我再次更新了我的问题,以包含整个循环:)
Timestamp timestamp = null;

            if (o.getTime().equals("300")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 03:00:00.0");

            } else if (o.getTime().equals("0")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 00:00:00.0");

            } else if (o.getTime().equals("600")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 06:00:00.0");

            } else if (o.getTime().equals("900")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 09:00:00.0");

            } else if (o.getTime().equals("1200")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 12:00:00.0");

            } else if (o.getTime().equals("1500")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 15:00:00.0");

            } else if (o.getTime().equals("1800")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 18:00:00.0");

            } else if (o.getTime().equals("2100")) {
                timestamp = Timestamp.valueOf(o.getDate() + " 21:00:00.0");

            }