我正在尝试使用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