1. 程式人生 > >Android的Sqlite中DateTime型別資料的存取問題

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

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

        我們知道Date型別資料在資料庫中是yyyy-MM-dd形式存的,而TimeHH: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());

這樣就可以直接用timestampsqlite中插入DateTime型別的資料了。

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

注意,AndroidSqlite

中的資料是弱型別儲存的。以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);
  轉載請註明出處: http://blog.csdn.net/lindonglian/article/details/44003549