博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中util.Date和数据库中datetime的操作!
阅读量:4229 次
发布时间:2019-05-26

本文共 981 字,大约阅读时间需要 3 分钟。

需求:
    User对象里面有java.util.Date的birthday,我们需要存的格式为2001-01-01 01:01:01,mysql数据库中是datetime,当我们需要存入数据库或从数据库中取出来时,有一些细节必须注意!因为直接将java.util.Date存入数据库是不行的!
    为了测试,我还在表中加了一个time的字段,类型为varchar。
存入数据库:
   
    加入我们直接将birthday存入数据库:ps.setDate((java.sql.Date)user.getBirthday()),这样会出错,因为类型的差异,强转会报错!
  
    方式一:(推荐)
        所有我们需要使用到java.sql.Timestamp这个类来进行转换:
            Timestamp t = new Timestamp(user.getBirthay().getTime());
            ps.setTimestamp(3, t);
        这样就可以直接存入数据库!
    方式二:
        我们直接将birthday转换成特定格式的字符串String,存入数据库,这样也可以!:
             DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String birthday = df.format(user.getBirthay());
             ps.setString(3, birthday);//这样和下面这样都可以!
             ps.setObject(3, birthday);
       这样转换成字符串存进数据库没问题,数据库的datetime接受特定格式的字符串,这样存进数据库还是datetime类型的值!
从数据库中取出来:
        取出来的时候就很简单了,因为java.sql.Timestamp是继承了java.util.Date,所有直接将取出来的值赋给birthdat就行了!
        Timestamp t = rs.getTimestamp("birthday");
        user.setBirthay(t);
日期比较问题:
      为了测试日期比较,排序,特意增加了一个字段time,time是varchar类型的,存的都是特定格式的日期字符串(注意是字符串),
当测试排序时,不管是tetime类型的birthday,还是varchar类型的time,都能比较和排序!
 
   
你可能感兴趣的文章
搭建炫酷的服务器监控平台
查看>>
垃圾分类:人机搭配,干活不累
查看>>
Nginx
查看>>
Memcached,session共享
查看>>
Tomcat,varnish
查看>>
SVN, 制作RPM包
查看>>
HTML 标签说明
查看>>
CSS 基本语法
查看>>
10.shell基础
查看>>
加密与解密、抓包扫描
查看>>
16.一级目录、历史命令,du,date,zip,快捷方式
查看>>
MySQL的基本管理
查看>>
MySQL 表结构与键值
查看>>
MySQL存储引擎,表记录管理
查看>>
Mysql多表查询语句,授权用户与密码更改
查看>>
MySQL 备份与恢复
查看>>
采用IC传感器的相对湿度测量
查看>>
皮带传动实验
查看>>
微软的人才观
查看>>
Blizzard的MPQ文件格式搜索算法
查看>>