天天看點

java中util.Date和資料庫中datetime的操作

java中util.Date和資料庫中datetime的操作! 需求:     User對象裡面有java.util.Date的birthday,我們需要存的格式為2001-01-01 01:01:01,mysql資料庫中是datetime,當我們需要存入資料庫或從資料庫中取出來時,有一些細節必須注意!因為直接将java.util.Date存入資料庫是不行的!     為了測試,我還在表中加了一個time的字段,類型為varchar。

java中util.Date和資料庫中datetime的操作
java中util.Date和資料庫中datetime的操作

存入資料庫:         加入我們直接将birthday存入資料庫:ps.setDate((java.sql.Date)user.getBirthday()),這樣會出錯,因為類型的差異,強轉會報錯!        方式一:(推薦)         所有我們需要使用到java.sql.Timestamp這個類來進行轉換:             Timestamp t = new Timestamp(user.getBirthay().getTime());

            ps.setTimestamp(3, t);

        這樣就可以直接存入資料庫!

    方式二:         我們直接将birthday轉換成特定格式的字元串String,存入資料庫,這樣也可以!:              DateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

             String birthday = df.format(user.getBirthay());

             ps.setString(3, birthday);//這樣和下面這樣都可以!

             ps.setObject(3, birthday);

java中util.Date和資料庫中datetime的操作

       這樣轉換成字元串存進資料庫沒問題,資料庫的datetime接受特定格式的字元串,這樣存進資料庫還是datetime類型的值!

從資料庫中取出來:

        取出來的時候就很簡單了,因為java.sql.Timestamp是繼承了java.util.Date,所有直接将取出來的值賦給birthdat就行了!         Timestamp t = rs.getTimestamp(“birthday”);

        user.setBirthay(t);

java中util.Date和資料庫中datetime的操作

日期比較問題:

      為了測試日期比較,排序,特意增加了一個字段time,time是varchar類型的,存的都是特定格式的日期字元串(注意是字元串), 當測試排序時,不管是tetime類型的birthday,還是varchar類型的time,都能比較和排序!