将new Date() 类型转换成Timestamp后插入数据库,仍旧丢失时分秒

将new Date() 类型转换成Timestamp后插入数据库,仍旧丢失时分秒

数据库是SqlServer数据库,字段类型是datetime

//登录
    public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user = userService.findUserByUsername(username);
        /*System.out.println("数据库时间:"+user.getRecentLoginTime());*/
        boolean loginpass = userService.login(username,password);
        if (loginpass == false){
            return mapping.findForward("login_fail");
        }else {
            if (user.isDisabled()==false){
                request.getSession().setAttribute("user",user);
                Date recentLoginTime = new Date();
                Timestamp timestamp = new Timestamp(recentLoginTime.getTime());
                user.setRecentLoginTime(timestamp);
                userService.updateUser(user,request);
                /*System.out.println("时间:"+user.getRecentLoginTime());*/
                logger.info("用户"+username+"登录成功");
                return mapping.findForward("login_success");
            } else {
                return mapping.findForward("login_disabled");
            }
        }
    }

debug的时候时间是对的

img

img


但是插入数据库之后丢失了时分秒

img

想知道怎么解决这个问题以及导致这个问题的原因

很显然setRecentLoginTime函数里面没处理好呗
你不放出代码来看我也猜不着你怎么写的呀

确定下数据库类型没问题,可以存有时间的值的话,直接new date不就好了么,再不行就在date类型字段上加个 @Temporal(TemporalType.TIMESTAMP) 注解试试