java.util.Date日期類通過java語句轉換成Sql(這裡測試用的是oracle)語句可直接插入(如:insert into)的日期型別
阿新 • • 發佈:2018-12-10
public void add(Emp emp) throws Exception{ QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource()); String sql = "insert into emps (id,username,salary,hiredate) values(?,?,?,?) "; java.util.Date ud = emp.getHiredate(); //initialize the ud such as ud = new java.util.Date();java.sql.Date sd = new java.sql.Date(ud.getTime()); //java.sql.Timestamp dateSQL = new java.sql.Timestamp(ud.getTime()); Object[] params = {emp.getId(),emp.getUsername(),emp.getSalary(),sd}; runner.update(sql,params); }
java.util.Date與java.sql.Date,java.sql.TimeStmp之間的轉化,可以參考()
java.sql.Date是為了配合SQL DATE而設定的資料型別。“規範化”的java.sql.Date只包含年月日資訊,時分秒毫秒都會清零。格式類似:YYYY-MM-DD。當我們呼叫ResultSet的getDate()方法來獲得返回值時,java程式會參照"規範"的java.sql.Date來格式化資料庫中的數值。因此,如果資料庫中存在的非規範化部分的資訊將會被劫取。
同理。如果我們把一個java.sql.Date值通過PrepareStatement的setDate方法存入資料庫時,java程式會對傳入的java.sql.Date規範化,非規範化的部分將會被劫取。然而,我們java.sql.Date一般由java.util.Date轉換過來,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).
顯然,這樣轉換過來的java.sql.Date往往不是一個規範的java.sql.Date.要儲存java.util.Date的精確值,
我們需要利用java.sql.Timestamp.