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();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM