AndroidのSqliteにおけるDateTime型データへのアクセスの問題

1628 ワード

sqliteにおける日付型データのアクセスについてはネット上には少なくないが,これほど細かく話すことは少ないことが分かった.さらにDateを用いて、日付データの統計分析を行う必要がなく、アクセスに対する要求が比較的小さい直接long、すなわちdateTimeに変換する.getTime()ストレージ.インタフェースに表示する必要がある場合はlong型の日付データをDateまたはDateTime型に変換します.しかし、データ統計分析をすると、記録ごとに変換するのは特に面倒で、データ量が大きいと時間消費が大きくなります.
Date型データはデータベースにおいてyyy−MM−dd形式で保存され,TimeはHH:mm形式で保存されることが分かった.DateTimeタイプの記憶方式はyyy-MM-ddHH: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はSQLDATEに合わせるために設定されたデータ型です.「正規化」java.sql.Dateには、データベースに存在する非正規化された部分の情報が毎分秒ミリ秒のようにゼロに奪われるため、年月日情報のみが含まれます.
Javaを保存するには.util.Dateの正確な値は、
Javaを利用する必要があります.sql.Timestamp
Timestamp timestamp = new Timestamp(dateTime.getTime());

これによりtimestampでDateTimeタイプのデータをsqliteに直接挿入できます.
じゃ、取りますか.重要な問題は、カーソルに日付データを専用に取得する方法がないことです.
注意、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);

転載は出典を明記してください.http://blog.csdn.net/lindonglian/article/details/44003549