mysql时间后面有个 0_mysql异常(一)日期后面多了个 .0 的解决办法

从数据库读出来的日期后面多了个 .0 的解决办法

从数据库读出来的日期后面为什么多了个 .0,这是因为你数据库的该字段设置为 timestamp 类型了,然而如果设置为Date类型的话就不会报这种错误了,当然,你非要用 timestamp 类型的话,小编也帮你给解决了,也很简单。我把测试类给大家看一下吧,有图有真相

[java] view plaincopyimportjava.text.SimpleDateFormat;importjava.util.Date;importorg.lee.dao.FactoryDao;importorg.lee.model.User;publicclassDateFormat {publicstaticvoidmain(String[] args)throwsException {User user = FactoryDao.getUserDAO().getUserById("user");//从数据库获取对象SimpleDateFormat fmt = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");//创建要显示的日期格式//注意了,这里的   MM 在java中代表月份,而  mm 代表分钟, HH 代表24小时制的时间, hh 代表12小时制的时间,很严格的Date date = fmt.parse(user.getTime());      //将从数据库读出来的 timestamp 类型的时间转换为java的Date类型String s = fmt.format(date);                //将这个时间格式化,转换为String类型System.out.println("user.getTime()        : "+user.getTime());//打印原本从数据库读出来的 timestamp 类型日期System.out.println("date.toLocaleString() : "+date.toLocaleString());//打印使用Date.toLocaleString()方法得到的日期System.out.println("fmt.format(date)      : "+s);//打印格式化之后的日期,这是最理想的日期格式/*Date To String*/String str = fmt.format(date);/*String To Date*/Date d = fmt.parse(s);}}

运行结果:

7703b16875cb88b9be1b60215a879ece.png采用MySQL自带的函数DATE_FORMAT。date_format(utt.created_at, '%Y-%m-%d %H:%i:%s') createdAtdate_format(utt.updated_at, '%Y-%m-%d %H:%i:%s') AS updatedAt

第一、直接在MySQL中解决:SELECT T.ID, T.USERNAME, DATE_FORMAT(t.birthday, '%Y-%m-%d %k:%i:%s') as birthday FROM USERINFO T;SQL语句中加DATE_FORMAT函数就不会带微秒。

第二、在Java中处理:public static String getFullFormateString(Date date){   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   return date == null ? "" : sdf.format(date);}

07e5cd9e4ecee4c573251ddd83f42d43.png

.0 到底是怎么来的?

怎么解决?除了substring

b7e4891bcbdbe5ca19f1332df0cdc537.png

改为getTimestamp仍然不行?

评论:

正确读取时间的方法:System.out.println(new Date(rs.getTimestamp('time')));

时间不能这样取,rs.getString()用来取String类型的数据。把时间直接按String读取相当于先取取java.sql.Timestamp该类型数据然后再对该数据进行toString()所以才会得到你看到的“错误”的结果。

参考:http://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.htmlFormats a timestamp in JDBC timestamp escape format. yyyy-mm-dd hh:mm:ss.fffffffff, where ffffffffff indicates nanoseconds.或者:采用MySQL自带的函数DATE_FORMAT。date_format(utt.created_at, '%Y-%m-%d %H:%i:%s') AS createdAtdate_format(utt.updated_at, '%Y-%m-%d %H:%i:%s') AS updatedAt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值