关于向Mysql中写入插入时间只有日期没有时分秒以及JSP页面显示日期多了个.0的问题
我们一般再将实体类中的日期类型的数据写入数据库的时候,需要把java.util.Date转换为java.sql.Date,我们使用常规的方法去转换,转换过来的只可以得到年月日。如果需要取得时分秒,可以使用Date类的子类Timestamp。
java.util.Date是不能直接插入数据库的,虽然它包含了日期和时分秒。java.sql.Date可以直接写入数据库,但是它只有日期没有时间,java.sql.Time可以直接写入数据库,但是它只有时间没有日期。使用java.sql.Timestamp可包含目前到毫秒的时间值。
再程序中我们常常使用的是java.util.Date,所以我们就要将java.util.Date转换为java.sql.Timestamp.
插入数据时:
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()));
psmt.setInt(4, message.geteId());
psmt.execute();
} catch (Exception e) {
e.printStackTrace();
}
取出数据时:
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) {
e.printStackTrace();
}
jsp页面显示多个0,使用下面的方法解决:
用jsti的fmt:formatDDate标签.(注:项目虚引入jstl的jar,页面需要引入标签库)
<%@
taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt"
%>
<c:forEach var="me" items="${me}">
<tr>
<td width="15%">${me.message.mTitle}</td>
<td width="20%">${me.message.mContent}</td>
<td width="10%"><span style="color:#ff0000;">
<fmt:formatDate value="${me.message.mPublishTime}" pattern="yyyy-MM-dd HH:mm:ss"/></span></td>
<td width="10%">${me.employee.eName}</td>
<td width="10%">回复(..)</td>
</tr>
</c:forEach>