13

rawData というデータベースを作成しようとしています。データベースには、ID、外部ユーザー ID (別のテーブルからの _id)、データ、および最後にタイムスタンプの列があります。

私の質問は、SQlite でタイムスタンプを作成し、それをデータベースに保存する方法と、列のタイプ、テキストをどのようにするかです。データベースは、1 秒あたり 150 個の浮動小数点値と、これらの 150 個のエントリのそれぞれにタイムスタンプを格納できる必要があります。さらに、SQlite には float 型がないため、列の型として real を使用する必要がありますか?

public class RawDatabase{
public static final String TABLE_RAW_DATA = "rawData";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_FOREIGN_USER_ID = "foreignUserId";
public static final String COLUMN_DATA = "data";
public static final String COLUMN_TIME_STAMP = "timeStamp";

// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
    + TABLE_RAW_DATA + "(" + COLUMN_ID
    + " integer primary key autoincrement, " + COLUMN_FOREIGN_USER_ID
    + " integer, " + COLUMN_DATA 
    + " real, " + COLUMN_TIME_STAMP
    + " text not null);";
}
4

2 に答える 2

31

ドキュメントには次のように記載されています。

SQLite には、日付や時刻を格納するためのストレージ クラスが用意されていません。代わりに、SQLite の組み込みの日付と時刻関数は、日付と時刻を TEXT、REAL、または INTEGER 値として格納できます。

  • ISO8601 文字列としてのTEXT ("YYYY-MM-DD HH:MM:SS.SSS")。
  • ユリウス日としてのREAL。先発グレゴリオ暦による紀元前 4714 年 11 月 24 日のグリニッジ正午からの日数。
  • UNIX 時間としてのINTEGER、1970-01-01 00:00:00 UTC からの秒数。

アプリケーションは、これらの形式のいずれかで日付と時刻を保存することを選択し、組み込みの日付と時刻関数を使用して形式を自由に変換できます。

秒の精度だけが必要な場合は、Unix Time 形式の整数を使用してください。それ以外の場合は、小数秒に浮動小数点数を使用します。

于 2013-05-16T20:59:26.797 に答える