用Java操作資料庫Datetime資料

來源:互聯網
上載者:User

標籤: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資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.