我正在尝试将日期字段传递到表中。该列是sql时间戳,我不断收到运行时异常
4.5
我尝试使用java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] at
java.sql.Timestamp.valueOf(Timestamp.java:235)
at kafkaTest.TruckScheme.deserialize(TruckScheme.java:51)
at backtype.storm.spout.SchemeAsMultiScheme.deserialize(SchemeAsMultiScheme.java:33)
at storm.kafka.KafkaUtils.generateTuples(KafkaUtils.java:189)
at storm.kafka.PartitionManager.next(PartitionManager.java:121) at storm.kafka.KafkaSpout.nextTuple(KafkaSpout.java:124)
at backtype.storm.daemon.executor$fn__4949$fn__4964$fn__4993.invoke(executor.clj:585)
at backtype.storm.util$async_loop$fn__452.invoke(util.clj:465)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:745)
对其进行格式化,但我仍然遇到同样的错误。
有没有办法让java日期格式符合sql时间戳类型的确切格式?
感谢。 Piyush
答案 0 :(得分:1)
使用毫秒级SimpleDateFormatter,您可以匹配它们。请尝试这样做;
public static void main(String args[]) throws IOException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
String DateToStoreInDataBase= sdf.format(new Date()); // java.util.Date
System.out.println(DateToStoreInDataBase);
Timestamp ts = Timestamp.valueOf(DateToStoreInDataBase); // java.sql.Timestamp
System.out.println(ts);
}
结果是;
2015-05-12 09:02:02.645
2015-05-12 09:02:02.645
答案 1 :(得分:1)
我的问题是因为格式,谢谢
SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");