我的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
以将其添加到预准备语句中?
答案 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。