JDBC学习笔记之java日期与mysql日期转换

本文详细记录了在使用JDBC操作MySQL时遇到的日期转换问题,包括Java日期对象如何转换为MySQL日期格式,以及从数据库查询结果中将MySQL日期转换为Java日期对象的过程,帮助开发者解决日期类型在数据库与Java程序间转换的常见困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

package test;

import org.junit.Test;
import utils.JDBCUtils;

import java.sql.*;
import java.text.SimpleDateFormat;

/**
 * @author YIMENG
 * @creat 2022-04-18 13:32
 * @Desciption:
 *
 *      关于java的日期与数据库的日期问题
 *      1.数据库中的date是sql.date,在创建javabean时可以将属性声明为sql.date类型
 *      2.在向数据库存储date1时,此时的date1可能是util.date,而数据库中是sql.date/DATETIME
 *          此时,可以考虑将date1按照“yyyy-MM-dd HH:mm:ss”的格式格式化成字符串,之后保存到数据库中,
 *          由于数据库有隐式转换功能,可以将满足此格式的字符串隐式转换为对应的sql.date/DATETIME类型
 *      3.若数据库中存储的是DATETIME类型,在jdbc读取时,不能使用resultSet.getDate(...)/resultSet.getTime(...)
 *          前者不包括时间,后者不包括日期
 *          应使用resultSet.getTimestamp(...)返回值类型为java.sql.Timestamp!!!
 */
public class DateQuestion {
    @Test
    public void test1(){
        java.util.Date date = new java.util.Date();
        System.out.println(date);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdf.format(date);
        System.out.println(dateStr);
        String sql = "insert into dates values(?)";
        //自己写的通用增删改方法,数据库的连接,关闭都包含在内
        JDBCUtils.update(sql,dateStr);
    }

    @Test
    public void test2(){
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //1.获取数据库连接(封装好的获取链接的方法)
            conn = JDBCUtils.getConnection();
            //2.预编译sql获取PrepareStatement实例
            String sql = "select my_date from dates";
            ps = conn.prepareStatement(sql);
            //3.执行,并获取结果集
            rs = ps.executeQuery();
            //4.处理结果集
            if(rs.next()){
//                Date my_date = rs.getDate("my_date");
                Timestamp my_date = rs.getTimestamp("my_date");
                System.out.println(my_date);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //5.关闭资源
            JDBCUtils.closeResource(conn,ps,rs);
        }
    }

    @Test
    public void test3(){
        String sql = "insert into dates values(?)";
        JDBCUtils.update(sql,"0000-00-00 00:00:00");
    }
}

 数据表内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值