Android的Sqlite中DateTime類型資料的存取問題

來源:互聯網
上載者:User

Android的Sqlite中DateTime類型資料的存取問題

關於講sqlite中日期類型資料的存取網上有不少,但發現講得這麼細的非常少。更多的是用Date,不用做日期資料統計分析,對存取要求比較小的直接轉換成long,即dateTime.getTime()儲存。需要在介面上顯示的時候就再將long型的日期資料轉化為Date或DateTime類型。但是如果要做資料統計分析的話這樣每條記錄都要遍曆轉換會顯得特別麻煩,資料量大的話時間消費是很大的。

我們知道Date類型資料在資料庫中是yyyy-MM-dd形式存的,而Time是HH:mm形式存的。而DateTime類型的儲存方式是yyyy-MM-dd HH:mm:ss.fff,有年、月、日、時、分、秒、毫秒。這樣DateTime類型的資料怎麼存?相信是個困擾初學者的問題。

 

       String timeStr = “2015-3-1 16:20”;       SimpleDateFormat format = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);       format.setTimeZone(TimeZone.getTimeZone(GMT+08:00));// 中國北京時間,東八區       Date dateTime = null;       try {        dateTime = (Date) format.parse(timeStr);       } catch (ParseException e) {        e.printStackTrace();       }

 

java.sql.Date是為了配合SQL DATE而設定的資料類型。“正常化”的java.sql.Date只包含年月日資訊,原因是如果資料庫中存在的非正常化部分的資訊如時分秒毫秒都會劫取清零。

要儲存java.util.Date的精確值,

我們需要利用java.sql.Timestamp

 

Timestamp timestamp = new Timestamp(dateTime.getTime());

 

這樣就可以直接用timestamp向sqlite中插入DateTime類型的資料了。

那取呢?關鍵問題應該出現在遊標中沒有專門取日期資料的方法。

 

注意,Android的Sqlite中的資料是弱類型儲存的。以String取出,再轉化成日期類型的。

    String str;    SimpleDateFormat format;    Date date = null;    str = cursor.getString(cursor.getColumnIndex(相應的列名));    format = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);    date = (Date) format.parse(str);
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.