一个奇怪的日期问题(高手解答)

diaobiyong 2008-04-21 09:57:18
部分代码 数据库为oracle
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timestamp uploadDate= Timestamp.valueOf(df.format(new java.util.Date()));

String sql="insert into repository (id,name,uploadDate,caption,type,fileSize,filePath,description) values(repository_sequence.nextVal,?,?,?,?,?,?,?)";
System.out.println(sql);
try{
pstmt = dbconn.getConnection().prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setTimestamp(2,uploadDate);
pstmt.setString(3,caption);
pstmt.setString(4,type);
pstmt.setString(5,fileSize);
pstmt.setString(6,fileName);
pstmt.setString(7,description);
pstmt.executeUpdate() ;
插入时可以的日期
但是在更新操作时却不可以
数据库部分代码
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timestamp uploadDate= Timestamp.valueOf(df.format(new java.util.Date()));

String sql="update repository set name='"+sName+"',type='"+sType+"',caption='"+sCaption+"',"+
"description='"+sDescription+"',filesize='"+fileSize+"',uploadDate='"+uploadDate+"',filePath='"+fileName+"'"+
"where id='"+id+"'";
System.out.println(sql);
try{
pstmt = dbconn.getConnection().prepareStatement(sql);
pstmt.executeUpdate() ;
不更新日期是可以更新该sql的,但是uploadDate两者打出来都是2008-04-21 09:45:14.0,打出来的sql去数据库里查不进去也,说该月份无效
为什么啊?
...全文
123 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
diaobiyong 2008-04-21
  • 打赏
  • 举报
回复
代码String sql="update repository set name=?,type=?,caption=?,description=?,filesize=?,uploadDate=?,filePath=? where id=?";
System.out.println(sql);
try{
pstmt = dbconn.getConnection().prepareStatement(sql);
pstmt.setString(1,sName);
pstmt.setString(2,sType);
pstmt.setString(3,sCaption);
pstmt.setString(4,sDescription);
pstmt.setString(5,fileSize);
pstmt.setTimestamp(6,uploadDate);
pstmt.setString(7,fileName);
pstmt.setString(8,sId);
pstmt.executeUpdate() ;
diaobiyong 2008-04-21
  • 打赏
  • 举报
回复
不报错,处理很慢很慢,不停的loading中。。没反应,我用另一种方法把2008-04-21 10:42:07.0截断为2008-04-21 10:42:07的string,也是一样,不停的loading中。后者uploadDate=to_date('"+uploadDate+"', 'yyyy-mm-dd hh24:mi:ss'),这里的uploadDate应为日期的吧,转成string后不可以的吧,你的方法就是一直loading中没反应
panxuan 2008-04-21
  • 打赏
  • 举报
回复
pstmt.setTimestamp(2,uploadDate);
diaobiyong 2008-04-21
  • 打赏
  • 举报
回复
好像不行啊也
li_d_s 2008-04-21
  • 打赏
  • 举报
回复
String sql="update repository set name=?,type=?,caption=?,description=?,filesize=?,uploaDate=?,filePth=? where id=?";
diaobiyong 2008-04-21
  • 打赏
  • 举报
回复
那这条sql是这么写嘛?
String sql="update repository set(name,type,caption,description,filesize,uploaDate,filePth) values(?,?,?,?,?,?,?) where id='"+id+"'";
好像不对哦。。麻烦了大侠
li_d_s 2008-04-21
  • 打赏
  • 举报
回复
这个和TimeStamp的toString方法有关系,如果你要用TimeStamp,推荐还是用占位符的方式
diaobiyong 2008-04-21
  • 打赏
  • 举报
回复
还有个问题,用了你的uploadDate是2008-04-21 10:42:07.0打出来的,去掉.0就可以查了如2008-04-21 10:42:07
Timestamp uploadDate这个值难道做字符串处理嘛?还是用别的办法
diaobiyong 2008-04-21
  • 打赏
  • 举报
回复
对哦,,,谢谢。试试哈
li_d_s 2008-04-21
  • 打赏
  • 举报
回复
晕,Oracle不能直接把string当成date用的,又不是sqlserver
String sql="update repository set name='"+sName+"',type='"+sType+"',caption='"+sCaption+"',"+
"description='"+sDescription+"',filesize='"+fileSize+"',uploadDate=to_date('"+uploadDate+"', 'yyyy-mm-dd hh24:mi:ss'),filePath='"+fileName+"'"+
"where id='"+id+"'";
或者说还是用你1的方式,用占位符加上setTimestamp来做也可以
richard_2010 2008-04-21
  • 打赏
  • 举报
回复
uploadDate=to_date('"+uploadDate+"', 'yyyy-mm-dd hh24:mi:ss')
这里uploadDate不就是日期类型的么,还能用to_date么?。。。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧