关于向Mysql数据库中插入时间只有日期没有时分秒的问题

关于向Mysql数据库中插入时间只有日期没有时分秒以及jsp页面显示日期时间多了个.0的问题

Java.util.Date需要转换为java.sql.Date,常规的方式转换过来只可以得到年月日,如若要取得时分秒,可以用Date的子类Timestamp

java.util.Date是不能直接插入数据库中的,虽然它包含了日期和时分秒。java.sql.Date可以直接插入数据库,但是它只有日期而没有时间;java.sql.Time可以直接插入数据库,但是它只有时间,没有日期

使用java.sql.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()));
			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();

3.jsp页面显示时多了个0,可以用如下方式解决:

  用jstl的<fmt:formatDate>标签,(项目需要引入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%"><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>




  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值