必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-09-12 01:41:05来源:IT技术作者:seo实验室小编阅读:75次「手机版」
 

多了一个

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

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

[java] view plain copy

  1. import java.text.simpledateformat;  
  2. import java.util.Date;  
  3. import org.lee.dao.FactoryDao;  
  4. import org.lee.model.User;  
  5.   
  6. public class DateFormat {  
  7.       
  8.     public static void main(String[] args) throws Exception {  
  9.         User user = FactoryDao.getUserDAO().getUserById("user");            //从数据库获取对象  
  10.         SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //创建要显示的日期格式  
  11.         //注意了,这里的   MM 在java中代表月份,而  mm 代表分钟, HH 代表24小时制的时间, hh 代表12小时制的时间,很严格的  
  12.           
  13.         Date date = fmt.parse(user.getTime());      //将从数据库读出来的 timestamp 类型的时间转换为java的Date类型  
  14.         String s = fmt.format(date);                //将这个时间格式化,转换为String类型  
  15.         System.out.println("user.getTime()        : "+user.getTime());         //打印原本从数据库读出来的 timestamp 类型日期  
  16.         System.out.println("date.tolocaleString() : "+date.toLocaleString());  //打印使用Date.toLocaleString()方法得到的日期  
  17.         System.out.println("fmt.format(date)      : "+s);                      //打印格式化之后的日期,这是最理想的日期格式  
  18.   
  19.   
  20.         /*Date To String*/  
  21.         String str = fmt.format(date);  
  22.           
  23.         /*String To Date*/  
  24.         Date d = fmt.parse(s);  
  25.   
  26.     }  
  27.   
  28. }  

运行结果:

采用mysql自带的函数DATE_FORMAT。

date_format(utt.created_at, '%Y-%m-%d %H:%i:%s') createdAt

date_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);

}

.0 到底是怎么来的?

怎么解决?除了substring

改为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.html

Formats 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 createdAt

date_format(utt.updated_at, '%Y-%m-%d %H:%i:%s') AS updatedAt

相关阅读

淘宝收藏加购刷多了会有问题吗?怎么刷?

淘宝刷收藏加购可以提升宝贝的人气值,提升宝贝综合排名和人气排名,每一个爆款都需要收藏的支持,不过淘宝单纯的刷收藏加购和刷单有点

启动绿鞋机制也难阻破发,小米上市之后面临重压

8岁的小米终于今天在香港迎来了自己的上市时刻,一举创了港股多个第一。既是香港首家同股不同权上市公司;也是香港最大规模的科技互

js中subString()方法,可用来截取指定字符串后面的所有

substring(start,stop) 方法用于提取字符串中介于两个指定下标之间的字符。 注:1)substring()返回的子串包括start处的字符,但不包括

跳槽涨工资,为啥比升职快多了(转)

春天到了,万物复苏,人们蠢蠢欲动,又到了......又到了跳槽的季节。 是的,年终奖拿了,年也过完了。经过一个假期的休整,过年之后你对着信

花呗退款多了被关闭,对芝麻信用有什么影响?

很多人在淘宝上疯狂买东西,但是收到货之后又不太满意想要退货退款,因为很多人都是用花呗支付,担心花呗退款多了被关闭。那么花呗退款

分享到:

栏目导航

推荐阅读

热门阅读