2013-03-01 59 views
0

我正在寻找一种方法来获取今天的日期并传递到SQL表并保存在那里。调用保存的日期并使用JODA TIME API执行一些任务。该改变乔达时间日期到SQL表,并保存有和进程继续..日期 - Java到Sql表和SQL表通过Joda时间到Java时间

我试过这种方式,

//prints todays date 
java.sql.Date sqlDate = new java.sql.Date(new Date().getTime()); 
//passes wrong date to the table like 1970-07-01 instead of 2013-03-01 
String insert = "INSERT INTO TEST_TABLE VALUES(1,"+sqlDate+")"; 
pStmt = conn.prepareStatement(insert); 
pStmt.executeUpdate(); 

//converting to joda time 
LocalDate ld = new LocalDate(sqlDate); 

//some calculations, and how to convert back to sql date? 

我想在这里做的就是,一个表3列(ID,开始日期,finishdate)。 ID将由用户输入,开始日期应该自动输入今天的日期。经过一些计算与乔达时间和完成日期将被设置为日期完成。

代码

String insert = "INSERT INTO TEST_TABLE VALUES(2,'"+timestamp+"')"; 

错误

Data type mismatch in criteria expression 
//I have created table using MS access 
//the format of the date column is Date/Time. 
+0

你见过此http://计算器。 com/questions/8992282/convert-localdate-to-localdatetime-or-java -sql-timestamp – Freak 2013-03-01 10:41:18

+0

可能请查看底部更新的问题,我面临错误,谢谢。 – vijay 2013-03-01 10:57:44

+0

请正确使用准备好的语句(通过使用'?'代替您想要的参数,然后使用相应的'setX()'函数),您的PS在技术上仍然容易受到SQL注入的影响。 – Quetzalcoatl 2013-03-01 11:34:08

回答

4

你可以在这里使用时间戳。 java.sql.Timestamp延伸java.util.Date,所以任何你可以用java.util.Date做什么,你也可以用java.sql.Timestamp

要转换LocalDateTime到时间戳

Timestamp timestamp = new Timestamp(localDateTime.toDateTime().getMillis()); 

,但如果你仍然想Timestamp转化为java.sql.Date然后用这个

java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 
+0

可能请看看底部的更新问题,我正面临错误,谢谢。 – vijay 2013-03-01 10:56:40

+1

我对存储目的及其数据类型的MS访问不太熟悉,但尝试将时间戳插入到java.sql.Date中,如果仍然无法将ms访问列的数据类型转换为TEXT而不是日期/时间 – Freak 2013-03-01 11:00:00

+0

*我的意思是尝试将时间戳转换为java.sql.Date – Freak 2013-03-01 11:13:16