zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
  • 相关阅读:
    C++学习9 this指针详解
    福建省第八届 Triangles
    UVA 11584 Partitioning by Palindromes
    POJ 2752 Seek the Name, Seek the Fame
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    HDU 2988 Dark roads(kruskal模板题)
    HDU 1385 Minimum Transport Cost
    HDU 2112 HDU Today
    HDU 1548 A strange lift(最短路&&bfs)
  • 原文地址:https://www.cnblogs.com/liuyiyuan/p/13055112.html
Copyright © 2011-2022 走看看