一、关于向MySQL数据库中插入时间只有日期没有时分秒
java.util.Date是不能直接插入数据库中的,虽然它包含了日期和时分秒。
java.sql.Date可以直接插入数据库,但是它只有日期而没有时间;
java.sql.Time可以直接插入数据库,但是它只有时间,没有日期
Java.util.Date需要转换为Java.sql.Date,常规的方式转换过来只可以得到年月日,如若要取得时分秒,可以用Java.sql.Date类的子类Timestamp
使用java.sql.Timestamp来向数据库插入。在程序中,我们常常是使用的java.util.Date,所以就要将java.util.Date转化为java.sql.Timestamp
1.插入数据时:
java.util.Date是不能直接插入数据库中的,虽然它包含了日期和时分秒。
java.sql.Date可以直接插入数据库,但是它只有日期而没有时间;
java.sql.Time可以直接插入数据库,但是它只有时间,没有日期
Java.util.Date需要转换为Java.sql.Date,常规的方式转换过来只可以得到年月日,如若要取得时分秒,可以用Java.sql.Date类的子类Timestamp
使用java.sql.Timestamp来向数据库插入。在程序中,我们常常是使用的java.util.Date,所以就要将java.util.Date转化为java.sql.Timestamp
1.插入数据时:
Connection conn = null; PreparedStatement psmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); psmt = conn.prepareStatement(sql); psmt.setString(1, message.getmTitle()); psmt.setString(2, message.getmContent()); psmt.setTimestamp(3, new Timestamp(message.getmPublishTime().getTime()));//将java.util.Date转化为java.sql.Timestamp psmt.setInt(4, message.geteId()); psmt.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();2.取出数据时:
try { conn = DBUtil.getConnection(); psmt = conn.prepareStatement(sql); rs = psmt.executeQuery(); while(rs.next()){ m=new Message(); m.setmId(rs.getInt("m_id")); m.setmTitle(rs.getString("m_title")); m.setmContent(rs.getString("m_content")); m.setmPublishTime(rs.getTimestamp("m_publishTime"));//直接取出时间戳类型数据 m.seteId(rs.getInt("e_id")); messages.add(m); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();二.从mysql数据库取出时间类型数据到jsp页面显示时多了个0,可以用如下方式解决:
用jstl的<fmt:formatDate>标签,(项目需要引入jstl的jar,页面需要引入标签库<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>)
1)用<fmt:formatDate />标签格式化一下
<c:forEach var="me" items="${me}"> <tr> <td width="15%">${me.message.mTitle}</td> <td width="20%">${me.message.mContent}</td> <td width="10%"><fmt:formatDate value="${me.message.mPublishTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td width="10%">${me.employee.eName}</td> <td width="10%">回复(..)</td> </tr> </c:forEach>