使用JDBC插入值的时候,sqlserver数据库的timestamp类型应该怎么插入?
Stringsql="insertintot_submessage(fbrno,finterid,fid,fparentid,fname,ftypeid,fdetail,...
String sql = "insert into t_submessage(fbrno,finterid,fid,fparentid,fname,ftypeid,fdetail,fdeleted,fmodifytime,fsystemtype,fspec) values(?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "0");
ps.setInt(2, o.getFInterID());
ps.setString(3, o.getFId());
ps.setInt(4, 0);
ps.setString(5, o.getFName());
ps.setInt(6, o.getFTypeID());
ps.setInt(7, o.getFDetail());
ps.setInt(8, o.getFDeleted());
ps.setTimestamp(9, new Timestamp(new java.util.Date().getTime()));
ps.setInt(10, o.getFSystemType());
ps.setString(11, o.getFSpec());
ps.executeUpdate();
财富值不错,请谅解
我在代码里面使用了Timestamp类型来对应该字段,但是还是不行。
提示:不允许从数据类型 datetime 到数据类型 timestamp 的隐性转换(表 'AIS20110321093226.dbo.t_SubMessage',列 'FModifyTime')。请使用 CONVERT 函数来运行此查询。
财富值不多,请谅解 展开
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "0");
ps.setInt(2, o.getFInterID());
ps.setString(3, o.getFId());
ps.setInt(4, 0);
ps.setString(5, o.getFName());
ps.setInt(6, o.getFTypeID());
ps.setInt(7, o.getFDetail());
ps.setInt(8, o.getFDeleted());
ps.setTimestamp(9, new Timestamp(new java.util.Date().getTime()));
ps.setInt(10, o.getFSystemType());
ps.setString(11, o.getFSpec());
ps.executeUpdate();
财富值不错,请谅解
我在代码里面使用了Timestamp类型来对应该字段,但是还是不行。
提示:不允许从数据类型 datetime 到数据类型 timestamp 的隐性转换(表 'AIS20110321093226.dbo.t_SubMessage',列 'FModifyTime')。请使用 CONVERT 函数来运行此查询。
财富值不多,请谅解 展开
3个回答
展开全部
你好:
SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。
我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。
如何向SQLServer中的datatime类型字段插入日期数据2008年03月28日 星期五 17:23最近总是因日期类型而困惑,今天发现了其中的原因,拿出来总结一下:
在JAVA中如果通过JDBC访问MSSQL数据库,其实你可以这样向datatime类型字段插入日期数据:
...........................
........//连接数据库就不用写了
String sql="insert into datetest values(?,?)";//第一个参数name字段,第二个是datetime类型birthday字段
PreparedStatement ps=con.prepareStatement(sql);
//Timestamp st = new Timestamp(new Date().getTime());//创建Timestamp对象
//---------------------这句很重要
Timestamp st = new java.sql.Timestamp(new java.util.Date().getTime());//创建Timestamp对象
//--------------------------
ps.setString(1, "xiaoxu");
ps.setTimestamp(2, st);//向数据库插入数据
ps.executeUpdate();
我以前总是用ps.setDate(2,date)方式,结果就是插入不进去。可能是JAVA中date类型与MSSQL数据库中datetime不兼容吧!
你也可以用另种方法向datatime类型字段插入日期数据:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
String date=sdf.format(new Date());
连接数据库
ps.setString(2, date)//也能向datatime类型字段插入日期数据ps.executeUpdate();
在JAVA中如果用Hibernate如何映射datetime类型呢?
在写javabean时用的是java.sql.Timestamp类型,但数据库里用的是Datetime类型(因为要保存时间),但我不想在数据库中用timestamp(很多数据,难改),
请问能直接把Timestamp映射成datetime类型么?
在Hibernate的映射配制文件中你可以直接类型指定成timestamp就行了!
SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。
我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。
如何向SQLServer中的datatime类型字段插入日期数据2008年03月28日 星期五 17:23最近总是因日期类型而困惑,今天发现了其中的原因,拿出来总结一下:
在JAVA中如果通过JDBC访问MSSQL数据库,其实你可以这样向datatime类型字段插入日期数据:
...........................
........//连接数据库就不用写了
String sql="insert into datetest values(?,?)";//第一个参数name字段,第二个是datetime类型birthday字段
PreparedStatement ps=con.prepareStatement(sql);
//Timestamp st = new Timestamp(new Date().getTime());//创建Timestamp对象
//---------------------这句很重要
Timestamp st = new java.sql.Timestamp(new java.util.Date().getTime());//创建Timestamp对象
//--------------------------
ps.setString(1, "xiaoxu");
ps.setTimestamp(2, st);//向数据库插入数据
ps.executeUpdate();
我以前总是用ps.setDate(2,date)方式,结果就是插入不进去。可能是JAVA中date类型与MSSQL数据库中datetime不兼容吧!
你也可以用另种方法向datatime类型字段插入日期数据:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
String date=sdf.format(new Date());
连接数据库
ps.setString(2, date)//也能向datatime类型字段插入日期数据ps.executeUpdate();
在JAVA中如果用Hibernate如何映射datetime类型呢?
在写javabean时用的是java.sql.Timestamp类型,但数据库里用的是Datetime类型(因为要保存时间),但我不想在数据库中用timestamp(很多数据,难改),
请问能直接把Timestamp映射成datetime类型么?
在Hibernate的映射配制文件中你可以直接类型指定成timestamp就行了!
展开全部
该字段属性为数据库自动增加的,你可以在JDBC里面不添加值,数据库会添加的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节
追问
那请问我在JDBC插入记录的时候该如何处理这个字段啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |