標籤:style blog http color io os 使用 ar java
Date、Calendar、Timestamp的區別、相互轉換與使用
1 Java.util.Date
包含年、月、日、時、分、秒資訊。
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.Date
包含年、月、日資訊,注意不包含時、分、秒資訊。
繼承自java.util.Date。用來讀寫資料庫中的時間類型的欄位,而無法使用Java.util.Date類型來操作資料庫中的時間類型欄位。
1 // java.util.Date轉換為java.sql.Date 2 new java.sql.Date(utilDate.getTime());// 其中utilDate為java.util.Date類型的對象
3 Java.util.Calendar
包含年、月、日、時、分、秒、毫秒資訊。
JDK1.1引入,用以代替java.util.Date。
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.Timestamp
包含年、月、日、時、分、秒、納秒(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-002) 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 { try { if(connection != null) { connection.close(); } } catch (Exception e) { e.printStackTrace(); } try { if(preparedStatement1 != null) { preparedStatement1.close(); } } catch (Exception e) { e.printStackTrace(); } try { if(preparedStatement2 != null) { 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
用Java操作資料庫Datetime資料