日期:2014-05-20  浏览次数:20598 次

给一个有特定格式的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);