2014-06-19 177 views
0
if(sqlData.get(i) != null){ 
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
java.sql.Timestamp myDate = new java.sql.Timestamp(dateFormat.parse(sqlData.get(i)).getTime()); 
preparedStatement.setTimestamp(i+1, myDate); 

我不确定我在做什么错误,我在第三行保留geting“java.text.ParseException:Unparseable date:”。如何将日期时间插入到MySQL日期时间?

这些是我已经从数据库中取出的日期,并且是过去设置的日期。

System.out.println(sqlData.get(i)); 

打印出:2014年4月19日5时48分22秒

+0

这个问题似乎是与'SQLDATA。 get(i)'String,它可能与您指定的DateFormat不匹配。打印'sqlData.get(i)'值来检查。 –

+1

这个例外不是因为日期过去了。这是因为'sqlData.get(i)'返回的日期不是''yyyy/MM/dd HH:mm:ss''格式。检查该列表中的每个值以避免使用不正确的格式。此外,如果日期来自数据库,则最好将它们作为“日期”或“时间戳”而不是“字符串”。 – Nivas

+0

@Nivas我100%肯定sqlData.get(i)以正确的格式返回一个字符串。 – user3521471

回答

3
java.text.ParseException: Unparseable date 

dateFormat.parse(抛出时传递给它的字符串不是在相同的格式指定的图案。

另请注意,您尚未发布整个异常消息(整行)。这本来是

java.text.ParseException: Unparseable date:2014-04-19 05:48:22 

在你的情况

2014-04-19 05:48:22不在格式"yyyy/MM/dd HH:mm:ss"

你的模式字符串应该是

yyyy-MM-dd HH:mm:ss Note the - instead of/
+0

哇。我觉得很愚蠢。我花了2小时试图正确插入这种方法的各种方法。另一双眼睛总是有帮助的,谢谢。 – user3521471

0

下面是分析一个日期,然后创建一个时间戳的它的一个例子。这是测试和工作,所以如果你遇到任何错误,它可能与你有的数据有关,而不是代码本身。

 String dateString = "1999/10/24 10:24:99"; 
     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     Date dateObj = dateFormat.parse(dateString); 
     Timestamp timeStamp = new Timestamp(dateObj.getTime());