2013-01-20 112 views
2

我正在使用java代码读取文本文件中的少量数据以及日期格式(30-OCT-2012 12-22-44-991),我想将这些详细信息存储在Oracle数据库,但格式与Oracle使用的格式相同。 我试过To_date但没用,它给出了错误。 请帮助我。将日期格式更改为Oracle日期格式

+2

请出示您是否尝试过的代码,以及确切的错误消息。 – Mat

回答

1

编辑: 可以使用PreparedStatement像亚历山大Blomskøld已经建议与帮助,从Using Oracle to_date function for date string with milliseconds

final sql = "INSERT into IFT_VEHICLE_STATUS (LATITUDE, LONGITUDE, UPDATED_AT) " + 
      "VALUES (?, ?, to_timestamp(?, 'DD.MM.YYYY HH24:MI:SS:SSFF3'))"; 
final PreparedStatement pstmt = con.prepareStatement(sql); 
pstmt.setInt(1, 81000000); 
pstmt.setInt(2, 162000000); 
pstmt.setDate(3, oracleDate); 

pstmt.execute(); 

老: 你们是不是要一个java.util.Date转换成java.sql.Timestamp?你可以是这样做的:

try { 
    final Date javaUtilDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-01-20 11:46:06"); 
    System.out.println("javaUtilDate = " + javaUtilDate); 
    final Timestamp oracleDate = new Timestamp(javaUtilDate.getTime()); 
    System.out.println("oracleDate = " + oracleDate); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

这会给下面的输出:

javaUtilDate = Fri Jan 20 11:46:06 CET 2012 
oracleDate = 2012-01-20 11:46:06.0 
+0

我将日期转换为时间戳,oracle列也是时间戳。但仍然我的查询不起作用。 –

+0

查询我正在使用 INSERT到IFT_VEHICLE_STATUS(LATITUDE,LONGITUDE,UPDATED_AT)VALUES('lat','lon','timestampdate'); –

+0

你可以使用'PreparedStatement'类似AleksanderBlomskøld的建议和帮助http://stackoverflow.com/questions/9180014/using-oracle-to-date-function-for-date-string-with-milliseconds: PreparedStatement pstmt = con.prepareStatement(“INSERT into IFT_VEHICLE_STATUS(LATITUDE,LONGITUDE,UPDATED_AT)VALUES(?,?,to_timestamp(?,'DD.MM.YYYY HH24:MI:SS:SSFF3'))”); pstmt.setInt(1,81000000); pstmt.setInt(2,162000000); pstmt.setDate(3,oracleDate); –