使用Java在MySQL中插入时间戳

时间:2017-09-18 18:38:39

标签: java mysql

我正在尝试使用Java将记录插入MySQL表。我的表架构:

for (Record rec : records) {
    st.setInt(1, rec.getId());
    st.setString(2, rec.getValue().toString());

    Timestamp ts = new Timestamp(rec.getDatetime());
    System.out.println("New Timestamp: " + ts);

    st.setTimestamp(3, ts);

    System.out.println("Insert Statement: " + st);
    st.addBatch();
}
st.executeBatch();

我在MySQL中插入记录的代码:

st

其中New Timestamp: 2017-09-18 17:59:03.362 Insert statement: INSERT INTO records ( id, value, recorded_time ) VALUES (306,'72.7','2017-09-18 17:59:03') 是准备好的陈述。输出:

ZonedDateTime.ofInstant(Instant.now(), ZoneOffset.UTC).toInstant().toEpochMilli();

'datetime'字段的值是使用Java8中的ZonedDateTime生成的:

var mvc = services.AddMvc();
mvc.AddJsonOptions(options =>
{
    options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
    options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
});

我的问题是时间戳显示我打印时的毫秒数。但为什么毫秒(362)没有存储在表中。如何解决它。

关于stackoverflow的类似问题:How to insert current time in MySQL using Java。但我不知道如何在我的情况下使用它。

编辑:MySQL版本 - 10.1.6

0 个答案:

没有答案