如何将Java字符串转换为Teradata DATE和Timestamp

时间:2014-10-10 20:12:35

标签: java jdbc prepared-statement teradata

我的java代码会生成两个Strings

String myDate = "10/10/2013";
String myTimestamp = "2013-10-09 14:30:20"; 

我需要将这些值提供给prepared statement,以便我可以使用jdbc将其上传到Teradata

以下是我的尝试:

String in = " INSERT INTO " + myTab + " VALUES (?,?) "; 

PreparedStatement prst = null; 
prst = connection.prepareStatement(in); 

   // add date
   prst.setDate(1, (Date) new SimpleDateFormat("MM/dd/yyyy").parse(myDate));

   //add timestamp
   prst.setDate(2, (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(myTimestamp)); 

上面的代码编译但不起作用。我收到empty string错误。如何将String转换为Teradata types DATE, TIMESTAMP以将其添加到预准备语句中?

2 个答案:

答案 0 :(得分:1)

您可以使用long java.sql.Date constructor,使用Date#getTime()并更改

prst.setDate(1, (Date) new SimpleDateFormat("MM/dd/yyyy").parse(myDate));

类似

prst.setDate(1, new java.sql.Date(new SimpleDateFormat("MM/dd/yyyy")
    .parse(myDate)).getTime());

和另一个

prst.setDate(2, new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    .parse(myTimestamp)).getTime());

答案 1 :(得分:1)

试试这个:

prst.setDate(1, new java.sql.Date(new SimpleDateFormat("MM/dd/yyyy").parse(myDate).getTime()));

这将转换您的日期,然后创建一个新的sqlDate。

prst.setTimestamp(2, new java.sql.Timestamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(myTimeStamp).getTime());)

表示时间戳使用setTimeStamp而不是setDate。