3

名前、住所、生年月日の詳細を含む Sqlite3 データベース テーブルがあります。1990 年 1 月 1 日から 1995 年 1 月 1 日までの詳細を表示したいと考えています。

ただし、Sqlite3 データベースには次のデータ型のみが格納されます。

TEXT
NUMERIC
INTEGER
REAL
NONE

日付形式のデータを保存および取得するためのヒントはありますか?

4

5 に答える 5

5

Androidでデータベースを使用していくつかのプロジェクトを行った私自身の経験から、私の答えは次のとおりです。

日付を文字列として保存しないでください。一度もない!これまで!それらを Unix タイムスタンプとして保存し、実行時に必要に応じてフォーマットします。

ここで重要なことは、何がデータであり、何がデータの画面上の表現であるかを区別することです。データの画面上の表現をデータベースに保存することは間違っています。

日付は常に INTEGER 型として保存します。

たとえば、日付を保存するには、値を保存しますSystem.currentTimeInMilis

1990-01-01 と 1995-01-01 の間で選択するには、次のようにします。

long val1 = new GregorianCalendar(1990, 01, 01).getTimeInMillis();
long val2 = new GregorianCalendar(1995, 01, 01).getTimeInMillis();

そして、SELECTこれら 2 つの値の間で通常のステートメントを実行します。

クラスyyyy-MM-ddを使用するときにこれらの値を画面に表示するには:SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
long longDate = cursor.getLong(colNumber); // from the database
String stringDate = dateFormat.format(new Date(longDate));
于 2013-10-02T08:06:01.170 に答える
3

このコードを使用して日付をミリ秒形式に変換し、INTEGER 型としてデータベースに保存します

String someDate = "1995-01-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(someDate);
System.out.println(date.getTime());

date.getTime() - ミリ秒形式を与える

同じ方法で入力を変換します (つまり、1990 年 1 月 1 日から 1995 年 1 月 1 日まで)。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = sdf.parse(1990-01-01);
    value1=date.getTime();
Date date2 = sdf.parse(1995-01-01);
    value2=date.getTime();

次のクエリを使用してデータベースから取得します

db.rawQuery("SELECT * FROM table_name WHERE column_name BETWEEN "+value1+" AND "+value2+"",null);

or 

db.rawQuery("SELECT * FROM table_name WHERE column_name<="+value1+" AND column_name>="+value2+"",null);
于 2013-10-03T05:17:26.107 に答える
0

yyyy-MM-dd 形式の日付を直接使用できます。JDBC はそれを認識します。DATE 型の c1 を持つテーブル t1 があるとします。

PreparedStatement ps = conn.prepareStatement("insert into t1 (c1) values (?)");
ps.setString(1, "2001-01-01");
ps.executeUpdate();

日付の読み取りも簡単です

ResultSet rs = st.executeQuery("select c1 from t1");
rs.next();
Date date = rs.getDate(1);

ResultSet.getDate は、結果を java.sql.Date として返します。その toString メソッドは、日付を yyyy-MM-dd 形式で返します。

于 2013-08-13T10:31:14.097 に答える