用Java操做數據庫Datetime數據

Date、Calendar、Timestamp的區別、相互轉換與使用java

1 Java.util.Datesql

包含年、月、日、時、分、秒信息。數據庫

1 // String轉換爲Date  
2 String dateStr="2013-8-13 23:23:23";  
3 String pattern="yyyy-MM-dd HH:mm:ss";  
4 DateFormate dateFormat=new SimpleDateFormat(pattern);  
5 Date date=dateFormat.parse(dateStr);  
6 date=dateFormat.format(date); 

2 Java.sql.Datedom

包含年、月、日信息,注意不包含時、分、秒信息sqlserver

繼承自java.util.Date。用來讀寫數據庫中的時間類型的字段,而沒法使用Java.util.Date類型來操做數據庫中的時間類型字段。url

1 // java.util.Date轉換爲java.sql.Date  
2 new java.sql.Date(utilDate.getTime());// 其中utilDate爲java.util.Date類型的對象 

3 Java.util.Calendarspa

包含年、月、日、時、分、秒、毫秒信息。.net

JDK1.1引入,用以代替java.util.Date。3d

1 // Date轉爲Calendar  
2 Date date=new Date();  
3 Calendar calendar=Calendar.getInstance();  
4 calendar.setTime(date);  
5   
6 // Calendar轉爲Date  
7 Calendar ca=Calendar.getInstance();    
8 Date d =(Date) ca.getTime(); 

4 Java.sql.Timestampcode

包含年、月、日、時、分、秒、納秒(nano)信息。

繼承自java.util.Date。比java.sql.Date包含更多信息。在數據庫相關操做中使用,如rs.getTimestamp,ps.setTimeStamp等。例如:若數據庫中某字段hireDate爲Oracle的Date類型,則使用getTimestamp時可以將年、月、日、時、分、秒信息取出;但使用getDate時則只能取出年、月、日信息。所以,通常推薦使用getTimestamp。

1 // java.util.Calendar轉換爲java.sql.Timestamp  
2 new Timestamp(Calendar.getInstance().getTimeInMillis());  
3 // java.util.Date轉換爲java.sql.Timestamp  
4 new Timestamp(date.getTime());  
5 // String轉換爲java.sql.Timestamp,String格式:yyyy-mm-dd hh:mm:ss[.f...] ,方括號表示可選  
6 Timestamp.valueOf("2013-07-06 01:49:30"); 

數據庫時間類型操做

1 在數據庫中插入時間

PreparedStatement ps = con.prepareStatement("insert into TableName(dAddTime) values(?)");
這裏有三種方式:

1) ps.setDate(1,new java.sql.Date(System.currentTimemillis()));
2) ps.setTime(2,new java.sql.Time(System.currentTimemillis()));
3) ps.setTimestamp(3,new java.sql.Timestamp(System.currentTimemillis()));

第一種只插入年月日 0000-00-00
第二種只插入時間 00:00:00
第三種則插入完整的時間 0000-00-00 00:00:00.000 .000是毫秒數。

2 取出數據庫時間

一般只有兩種:

1) getDate(String colname); // 取出日期 格式:0000-00-00
2) getTimestamp(String colname); // 取出日期和時間 格式:0000-00-00 00:00:00.000

例子:

public class ScriptInsertNo32 {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement1 = null;
        PreparedStatement preparedStatement2 = null;
        Calendar calendar = Calendar.getInstance();
        Date nowDate = null;
        
        try {
            String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            String url = "jdbc:sqlserver://localhost:1433;DatabaseName=water";
            String userString = "sa";
            String passwardString = "sicc2005";
            
            Class.forName(driverClass);
            connection = DriverManager.getConnection(url, userString, passwardString);
            
            String  sql1 = "INSERT INTO dbo.MonitorData VALUES "
                    + "('2c94a03d475d56f201475d71905e0006', '2c94a03d475d56f201475d5dc8570003', ?, ?, ?)";
            String  sql2 = "INSERT INTO dbo.MonitorData VALUES "
                    + "('2c94941448a657ff0148a718521c0007', '2c94941448a657ff0148a66db3df0003', ?, ?, ?)";
            preparedStatement1 = connection.prepareStatement(sql1);
            preparedStatement2 = connection.prepareStatement(sql2);
            nowDate = new Date();
            calendar.setTime(nowDate);
            Random random = new Random();
            DecimalFormat df = new DecimalFormat("0.00");
            
            for(int i = 0; i < 5; ++i) {
                double val1 = ((double) (random.nextInt()%80)/10);
                double val2 = ((double) (random.nextInt()%1800)/10);
            //    System.out.println("val:" + df.format(val));
                val1 = Double.parseDouble(df.format(val1));
                val2 = Double.parseDouble(df.format(val2));
                val1 = Math.abs(val1);
                val2 = Math.abs(val2);
                calendar.add(Calendar.MINUTE, 5);
                Timestamp timestamp = new Timestamp(calendar.getTimeInMillis());
                preparedStatement1.setTimestamp(1, timestamp);
                preparedStatement1.setTimestamp(2, timestamp);
                preparedStatement2.setTimestamp(1, timestamp);
                preparedStatement2.setTimestamp(2, timestamp);
                preparedStatement1.setDouble(3, val1);
                preparedStatement2.setDouble(3, val2);
                preparedStatement1.execute();
                preparedStatement2.execute();
            }
        
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
       if(connection != null)   
try { connection.close();   }   } catch (Exception e) {   e.printStackTrace();   }
       if(preparedStatement1 != null)   
try { preparedStatement1.close();   }   } catch (Exception e) {   e.printStackTrace();   }
       if(preparedStatement2 != null)   
try { preparedStatement2.close();   }   } catch (Exception e) {   e.printStackTrace();   } } } }

 

參考資料:

http://blog.csdn.net/kingzone_2008/article/details/9256287

http://wenku.baidu.com/link?url=HZ9q8WoIfHnMnSmenLKpDJpJCTFo0wYadcW6VR-ju3Lw7mq-PXUoDAfI-fqX5TkQd1MCcF9afN4STt-q3T67Q4ruEZtPnSxsWmHgd-Fg2lu

相關文章
相關標籤/搜索