数据库表中有一datetime字段,我用prepareStatement语句,怎么会写日期不进去呢?
我的代码如下:
prepareStatement _pstInsert = _conDB.prepareStatement("INSERT INTO Tbl""(last_modified) VALUES (?)");
现有几个问题想问:
1.写当前日期:
  java.sql.Date d = new java.sql.Date( (new java.util.Date()).getTime() );
  _pstInsert.setDate(1,d); 这样的执行时,会出异常/出错:[Microsoft][ODBC SQL Server Driver]没有执行可选特性2.写String入数据库
  String strdate = "2006-4-16";
  _pstInsert.setString(1,strdate);
  这样有时可以,有时又不可以,冒出这样的异常:
 [Microsoft][ODBC SQL Server Driver][SQL Server]从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。  望各位解难!!

解决方案 »

  1.   

    补充一下: 1.是在setDate()时出错。
               2.是在执行是有时出错。
      

  2.   

    用string写入时要符合日期的限定范围
    如写2006-2-30、2006-4-31等就会出错
      

  3.   

    把java.sql.Date 的类型用formater类转换成数据库适合的格式,然后再插入
      

  4.   

    楼上,我的时间是http头中的时间,应该是不会出错的啊
      

  5.   

    同意aywrenyue(基本功修炼中……)先将格式转换成标准格式,再保存
      

  6.   

    aywrenyue(基本功修炼中……) ,谢谢,我查了一下,有一个SimpleDateFormat,的format()函数,但之后是返回String类型啊,最后还是用setString()函数吗?还请讲解详细点
      

  7.   

    ps.setDate(Date)中的Date是java.util.Date,不用转换成java.sql.Date
    所以,ps.setDate(new java.util.Date());就可以了
      

  8.   

    STRING一样的,不过日期要“正常”
      

  9.   

    最好用string,在保存之前先校验这个值,可以采用
    try{
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    java.util.Date d=sdf.parse(tmp);
    return true;
    }catch(Exception e){return false;},
    如果能成功转化为日期则说明是日期字符,否则不是
      

  10.   

    用java.sql.Timestamp & setTimestamp()