给一个有特定格式的String,如何对他加工,才可以调用PreparedStatement.setTimestamp();
"2009.01.02 14:01:05"
如上,所谓特定的格式就是,除了"年"以外,如果值<10,就自动会在十位数上补0,当中有个空格,不是Tab
因此想用substring的朋友,可以把参数Index写死
我是希望用parseDate或parseTimestamp之类的parse函数来解决啦
String str="2009.01.02 14:01:05";
//...(这里是我希望得到代码)
PreparedStatement pStmt=new PreparedStatement(sql);
pStmt.setTimestamp(1,xxxxx,[xxxxx]); //查了下Api,第一个xxxx是必须有的,第二个是可选的,随你怎么来
数据库里的类型是TIMESTAMP(0),是不需要毫秒的,只需要精确到秒
请给出省略的代码,Thank you!
------解决方案--------------------
你的问题就是怎么转换String到Timestamp,先把你的str的格式改一下,改成2009-01-02 14:01:05
String str="2009-01-02 14:01:05";
Timestamp ts = Timestamp.valueOf(str);
然后把ts作为参数传进去就可以了
PreparedStatement pStmt=new PreparedStatement(sql);
pStmt.setTimestamp(1,ts);
------解决方案--------------------只要根据你的字符串,定义一个时间。
然后java.sql.Timestamp tStamp = new java.sql.Timestamp(getTime(str));
然后插入数据库就好了吧。
pStmt.setTimestamp(1,tStamp);
getTime(String timeStr);
Java code
public static Date getTime(String timeStr){
String str1 = timeStr.split(" ")[0];
String str2 = timeStr.split(" ")[1];
int year = Integer.parseInt(str1.split("\\.")[0]);
int month = Integer.parseInt(str1.split("\\.")[1]);
int day = Integer.parseInt(str1.split("\\.")[2]);
int hour = Integer.parseInt(str2.split(":")[0]);
int minute = Integer.parseInt(str2.split(":")[1]);
int second = Integer.parseInt(str2.split(":")[2]);
return new Date(year, month, day, hour, minute, second);
}
------解决方案--------------------
Timestamp tsTime = Timestamp.valueOf(new SimpleDateFormat().format(new Date()));
//rs.setTimestamp.setTimestamp(n,tsTime);