急 mysql中datetime与java.util.Date的问题 求大家指点~

hengdda 2005-04-12 06:36:07
先说我的情况,
挺惭愧 被我搞的挺乱的。

我的mysql表中日期是 datetime 类型 YYYY-MM-DD hh:mm:ss
但是我在插入数据的时候偷懒了 我用 2005-04-12:18:00:00 这样的Stirng字符串进行的插入,我以为可以蒙混过去.。
具体是这样的。
....
dbconnection.prepareStatement("insert into mytable <xid,xtime> values <?,?>");
....
dbconnection.setString(2,mydateString);

........我以为这样是可以用的。插入也挺成功 但是....


我用一个public class Myclass
{
public Date getXtime(){.....}// 这个Date被我设置成 java.util.Date
public void setXtime(){.....}
}
也就是说 我现在用个string 插入mysql的 datetime型中 然后返回的时候先用 用myclass.setXtime(rs.getDate("xtime"));取得数据库数据.
最后用 myclass.getXtime()这样获得xtime
按说这个xtime是java.util.Date
java.util.Date date=myclass.getXtime();
最后把 date.toString();的时候 我发现 只有年月日2005-04-12 后边的时间全部变成没了 这是为什么?
我这个过程很乱 大家指点下 到底是那一步导致?如何改正?
...全文
1121 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
YuLimin 2005-04-13
  • 打赏
  • 举报
回复
用java.sql.Date:(
hengdda 2005-04-12
  • 打赏
  • 举报
回复
我说的诡异是 mysql既然使用了 datetime格式 就应该使用getDate()来取 为什么要用getString()取个字符串 在解析回去成date 等到将来再用的时候 再解析回字符串呢?
难道getDate()对于mysql就是只能取个一半吗?既然返回java.sql.date 那么解析它也不行吗?为什么连它也是一半呢?


不管怎么说 --拜一下楼上的大哥~~~~谢谢了 T_T
jFresH_MaN 2005-04-12
  • 打赏
  • 举报
回复
那要再进行 DateFromat转换不是又要倒回去了?!
--------
因为你要得到Date类么,所以必须再倒回去啊
呵呵
jFresH_MaN 2005-04-12
  • 打赏
  • 举报
回复
没什么诡异的
数据库里面对日期的存储本质上是字符串啊
所以我自己读写全部都是用字符串的
hengdda 2005-04-12
  • 打赏
  • 举报
回复
成功了~
getString("xtime")返回成功了 这是什么道理?楼上的大哥给讲讲?我晕翻了~
为什么啊!?数据明明是datetime 为什么要用string接受啊?
还有 如果这样 那我出来的直接就是个string了 那要再进行 DateFromat转换不是又要倒回去了?!

还有我插入时候就是用now()函数插入的 结果读的时候居然用string读? 诡异??
jFresH_MaN 2005-04-12
  • 打赏
  • 举报
回复
呵呵,你这个方法是错误的
首先getDate()返回的只能是java.sql.Date(),你使用util.Date()自然就会截掉

我已经说了几遍了
用getString()来取值

晕。。
hengdda 2005-04-12
  • 打赏
  • 举报
回复
楼上的大哥 我刚才已经实验到myclass 里边了
我发现 java.sql.Date tempdate =rs.getDate("xtime")//数据库里边的数据就是用mysql 的now()函数自动生成的没错了。
java.util.Date tempdate2 =rs.getDate("xtime")//
这时我 System.out.println(tempedate.toString()+tempdate2.toString());
居然还是不行! 难道说 从数据库读出来那步开始就变少一半的?
jFresH_MaN 2005-04-12
  • 打赏
  • 举报
回复

Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(rs.getString("xtime"));
myclass.setXtime(date);
hengdda 2005-04-12
  • 打赏
  • 举报
回复
可以暂时这么理解 插入是没有问题的!

就是读出的时候 我不知道那一步导致了 读出的过程

我的读出步骤
连接数据库 直到 rs=dbconneciton.executeQuery();
myclass.setXtime(rs.getDate("xtime"))这样写出入我的myclass//我的myclass中的setxtime方法
setxtime(java.util.Date date){}
然后再最后在jsp中 java.util.Date date=myclass.getxtime();取下这个数值 然后toString()也好怎么转型也好 出来的都是没有时间只有日期的。

我想问究竟在那里导致了被砍掉一半的问题呢?
jFresH_MaN 2005-04-12
  • 打赏
  • 举报
回复
如果是datetime类型的,格式是绝对没问题的,后面的时候是可以的保存下来的
你应该用rs.getString()来读这个字段,应该没有问题啊
我用了这么久都没问题,难道你那就出错?试试吧
hengdda 2005-04-12
  • 打赏
  • 举报
回复
其实是怎么说呢 不是格式的问题 即使
insert into mytable <xid,xtime> values <?,2005-04-12 21:00:00");这样插入数据 在数据库中可以看到数据是 2005-04-12 21:00:00 而最后我 getXtime()出的时候还是给截掉了时间只有日期 这个情况我一直不知道在读出来的拿一步导致的
楼上的说的方法 now()函数确实可以 但是读出来的时候同样不行。
第2种方法 我的字符串就是用类似的 SimpleDateFormat 的静态方法生成的。
jFresH_MaN 2005-04-12
  • 打赏
  • 举报
回复
插入的时候用String类型
setString(2,new DateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
或者
sql语句修改为
dbconnection.prepareStatement("insert into mytable <xid,xtime> values <?,now()>");
now()函数默认也是这个格式的

读数据的时候
String date=rs.getString("xtime"):

ChDw 2005-04-12
  • 打赏
  • 举报
回复
应该使用setTimestamp方法来插入时间
hengdda 2005-04-12
  • 打赏
  • 举报
回复
数据库是 datetime 型~mysql的datime 型 它的基本格式就是 YYYY-MM-DD hh:mm:ss 这样的 我插入的字符串就是符合这个格式的 比如 2005-04-12 19:00:00 这样的 上边我说的哪个有些错误(2005-04-12:18:00:00-不是这样的 多了个:)

catchmeifyoucan 2005-04-12
  • 打赏
  • 举报
回复
数据库的数据呢?包含时间吗?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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