JDBC中日期类型数据的存储

Mysql数据库中的时间格式有:

Date :年月日

Datetime :年月日时分秒

时间戳转换的

Time:时分秒

Timestamp:年月日 时分秒

取时间类型的字段,无论什么时间类型,都可以直接赋值给java.util.Date

Java内存中使用的时间类型是:Java.util.Date

数据库中使用的时间类型对应的:java.sql.Date 是java.util.Date的子类

我们使用时会导致时间格式冲突

第一种方式:把java.util.Date转换成java.sql.Date

  • Java.sql.Date(long date)

  • 使用给定的毫秒时间值构造一个 Date对象。

 public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        try{
            conn = JDBCUtils.getConn();
            String sql = "insert into account values(?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1,"wangwu");
            ps.setInt(2,200);
            Date d = new Date();//在Java内存中使用的是 Java.util下的Date  父类
            // 把java.util.Date 转换成Long的时间戳
            long time = d.getTime();
            //创建java.sql.Date 根据时间戳生成时间
            java.sql.Date d1 = new java.sql.Date(time);
            ps.setDate(3,d1);
            ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeConn(conn,ps);
        }
    }

第二种方式 将日期格式化成字符串存储(推荐使用)

 public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        try{
            conn = JDBCUtils.getConn();
            String sql = "insert into account values(?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1,"lisi");
            ps.setInt(2,200);
            Date date = new Date();
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
            String date1 = sf.format(date);
            ps.setString(3,date1);
            ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeConn(conn,ps);
        }
    }

第三种方式:使用now()函数

Mysql中now()可以直接获取当前系统时间

 public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        try{
            conn = JDBCUtils.getConn();
            String sql = "insert into account values(?,?,now())";
            ps = conn.prepareStatement(sql);
            ps.setString(1,"zhaoliu");
            ps.setInt(2,200);
            ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeConn(conn,ps);
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值