今天我发现个郁闷的问题:
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
来显示字符型时间。
Date d = new Date();
myFmt.format(d);
out put:
2008-04-22 13:10:00
 但是我用
myFmt.parse(sdate);
out put:
Thu Apr 22 13:00:00 CST 2008
怎么不是我希望那得到yyyy-MM-dd HH:mm:ss格式?
而且往MYsql数据库插入的时候报错(user_tb中字段类型是DateTime).
The sql word is:insert into user_tb values('1','1','1','Thu Apr 19 19:00:00 CST 1984','1',1,-1)而且我发现如果我直接用字符形式的date插入不会报错????
String sdate="2008-04-22 13:00:00";
各位大侠指点下迷津?不会是MYsql一个bug吧?

解决方案 »

  1.   

    prase得到的是一个Date对象嘛。Date对象的toString当然是Thu Apr 22 13:00:00 CST 2008而不是你需要的那个格式了。
    如果要你需要的那个格式,你要把得到的Date对象再format一下才行。第二个问题没看明白。
      

  2.   

    多谢指教。第二个我刚刚解决了。MYsql DateTime是个混合日期类型为文本字符类型。
      

  3.   

    对于日期类型我认为最统一的办法就是取得长整数值, 也就是1970到现在的毫秒数, 然后用insert into table( col1, col2 ) values ( ?, ? ); 用stmt.setTimestamp( 2, new Timestamp( 长整数 ) ).好处
    1. 以后table表格结构变化也不会重写代码
    2. 用PreparedStatment避免SQL注入漏洞
    3. DBMS可以无关
      

  4.   

    datetime.tostring("yyyy-MM-dd HH:mm:ss")