• jdbc存取mysql的日期类型数据


    mysql存储日期数据常用的格式为 date 和 datetime,(其他还有timestamp等,但是没用过)。

    date与datetime的区别为:

    • date只保留日期,不保留时间值,如存的时候是 2019-5-7 12:12:12,取的时候就是 2019-5-7 00:00:00
    • datetime会保留日期时间值,但是末尾会多个0,如:2019-05-08 14:14:14.0

    在mysql中的存储格式:

    JDBC操作日期类型数据

    date 对应 java.sql.Date,datetime 对应 java.sql.Timestamp

    1、存储

     存储有三种方式

    //            preparedStatement.setDate(1, new Date(DateUtil.strToLong("2019-5-4 12:12:12")));
    //            preparedStatement.setTimestamp(1, new Timestamp(DateUtil.strToLong("2019-5-4 12:12:12")));
                preparedStatement.setString(1, "2019/5/7 12:12:12");

    这三种方式date和datetime类型都适用,对于date类型三种都只会存入日期值;对于datetime类型,第一种方式只会设置日期值。

    第三种方式直接设置字符串,虽然数据库中默认适用 ‘-’ 分隔日期 ‘:’ 分隔时间,但是实际写什么分隔都行,2019$5*7 12@12:12  这么写都行。

    2、取出

    取出方式有:使用对应类型的api取出时间对象,为java.sql下的类,也可以使用String类型取出。

    System.out.println("date类型:");
    System.out.println(resultSet.getDate("date_1"));
    System.out.println(resultSet.getTime("date_1"));
    System.out.println(resultSet.getTimestamp("date_1"));
    System.out.println(resultSet.getString("date_1"));
    System.out.println("datetime类型:");
    System.out.println(resultSet.getDate("datetime_1"));
    System.out.println(resultSet.getTime("datetime_1"));
    System.out.println(resultSet.getTimestamp("datetime_1"));
    System.out.println(resultSet.getString("datetime_1"));

    public class TestDate {
        private static final String sql1 = "insert into t_date values(null, ?, ?, ?) ";
        private static final String sql2 = "select * from t_date where id=?";
    
        public static void main(String[] args) {
            insert();
    //        select();
        }
    
        public static void select(){
            try {
                Connection connection = DBUtil.getConnection();
                PreparedStatement preparedStatement = connection.prepareStatement(sql2);
                preparedStatement.setInt(1, 5);
                ResultSet resultSet = preparedStatement.executeQuery();
                while(resultSet.next()){
                    System.out.println(resultSet.getInt(1));
                    System.out.println("==========-=-=--=-=-=-=-----");
                    System.out.println("date类型:");
                    System.out.println(resultSet.getDate("date_1"));
                    System.out.println(resultSet.getTime("date_1"));
                    System.out.println(resultSet.getTimestamp("date_1"));
                    System.out.println(resultSet.getString("date_1"));
                    
                    System.out.println("datetime类型:");
                    System.out.println(resultSet.getDate("datetime_1"));
                    System.out.println(resultSet.getTime("datetime_1"));
                    System.out.println(resultSet.getTimestamp("datetime_1"));
                    System.out.println(resultSet.getString("datetime_1"));
                    System.out.println("==========-=-=--=-=-=-=-----");
    
                    System.out.println(resultSet.getBigDecimal("big_decimal"));
                    System.out.println("==========-=-=--=-=-=-=-----");
                }
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    
        public static void insert(){
            try {
                Connection connection = DBUtil.getConnection();
                System.out.println(connection);
                PreparedStatement preparedStatement = connection.prepareStatement(sql1);
    
                //数据库字段为date类型,
    //            preparedStatement.setDate(1, new Date(DateUtil.strToLong("2019-5-4 12:12:12")));
    //            preparedStatement.setTimestamp(1, new Timestamp(DateUtil.strToLong("2019-5-4 12:12:12")));
                preparedStatement.setString(1, "2019-5-4 12:12:12");
    
                //数据库字段为datetime类型
    //            preparedStatement.setDate(2, new Date(new java.util.Date().getTime())); //Date对象设置会不保存时间值
    //            preparedStatement.setTimestamp(2, new Timestamp(new Date().getTime()));
                preparedStatement.setString(2, "2019-5-8 12:12:12");
                //数据库字段类型为bigdecimal
                preparedStatement.setDouble(3, 23.4);
                int i = preparedStatement.executeUpdate();
                System.out.println(i);
    
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    [Redis知识体系] 一文全面总结Redis知识体系
    MySQL数据导入到ClickHouse
    docker本地搭建clickhouse
    【linux】修改宝塔默认的PHP CLI版本
    windows 10 安装go环境
    docker安装centos8
    Bootstrap 简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。
    C#调用WebService
    登录时,记住用户的帐号密码
    asp.net,cookie,写cookie,取cookie
  • 原文地址:https://www.cnblogs.com/liuyiyuan/p/13055112.html
Copyright © 2020-2023  润新知