解决java.sql.Date写进数据库中时分秒丢失的问题并在页面中显示出来,格式均为yyyy-mm-dd HH:mm:ss

这个问题困扰我不是一天两天,看了很多回答,最后得到的都不是我想要的,今天终于解决了。
问题描述:
数据库字段ltime是datetime类型,获取当前系统时间存储在数据库中,数据库中的数据格式为yyyy-mm-dd HH:mm:ss ,并用el表达式显示出来,显示的格式同样为yyyy-mm-dd HH:mm:ss

再此之前需要明白两件事,数据库中日期类型是java.sql.Date,java代码中日期类型为java.util.Date,两者不同,显然涉及到转换的问题。
再者,为了标准化,java.sql.Date类型的数据写进数据库会将时分秒截取,这也是大部分人发现后台数据库时分秒不见的原因。
存储

long now=System.currentTimeMillis();//获取当前系统时间
Date d=new Date(now);
SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );//设置格式yyyy-MM-dd HH:mm:ss
String str = sdf.format(d);//注意此时是string类型
java.util.Date d1=null;
d1 = sdf.parse(str);//将string类型转化为sql.util.Date的时间
java.sql.Timestamp ts= new java.sql.Timestamp(d1.getTime());//很关键的一步,没有这个时分秒就不见了
ps.setTimestamp(2, ts);//这是为sql语句设置参数,注意用的是setTimestamp()

这时候执行sql插入语句,会发现数据库中时间形式符合想要的结果
在这里插入图片描述
取出
在项目中需求是按照格式yyyy-mm-dd HH:mm:ss显示在页面中
按照正常的EL表达式取出数据时,显示结果会多出来**.0**,如图:
在这里插入图片描述
修改代码解决尾部多出来.0的问题
导入jstl标签库
<%@page import=“java.util.*” %>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt”%>

 <fmt:formatDate var="a" value="${user.ltime}" pattern="yyyy-MM-dd HH:mm:ss" scope="request"/>
  <td><%=request.getAttribute("a") %></td>

在这里插入图片描述
终于大功告成!!!!
大部分答案给出来的,将时间变成String类型就结束了,但数据库中将时间类型变成varchar类型才行,虽然这样很简单,但这样就违背了数据库中的数据是datetime类型的初衷了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值