java中util.Date和資料庫中datetime的操作! 需求: User對象裡面有java.util.Date的birthday,我們需要存的格式為2001-01-01 01:01:01,mysql資料庫中是datetime,當我們需要存入資料庫或從資料庫中取出來時,有一些細節必須注意!因為直接将java.util.Date存入資料庫是不行的! 為了測試,我還在表中加了一個time的字段,類型為varchar。
存入資料庫: 加入我們直接将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);
這樣轉換成字元串存進資料庫沒問題,資料庫的datetime接受特定格式的字元串,這樣存進資料庫還是datetime類型的值!
從資料庫中取出來:
取出來的時候就很簡單了,因為java.sql.Timestamp是繼承了java.util.Date,所有直接将取出來的值賦給birthdat就行了! Timestamp t = rs.getTimestamp(“birthday”);
user.setBirthay(t);
日期比較問題:
為了測試日期比較,排序,特意增加了一個字段time,time是varchar類型的,存的都是特定格式的日期字元串(注意是字元串), 當測試排序時,不管是tetime類型的birthday,還是varchar類型的time,都能比較和排序!