web-dev-qa-db-ja.com

java)を介してsqliteに日付を挿入する方法

日付を保持するデータベース(SQLite)を作りたいです。ここで最初に尋ねるのは、日付列を宣言するための正しい構文は何ですか。次に知りたいのは、その後に日付を挿入する方法です。そして、私が知りたい3番目のことは、日付を選択する方法です。たとえば、2010年5月1日から2010年5月6日までの日付を含むすべての行を選択します。

ありがとうございました

16
dimitar

最初に尋ねるのは、日付列を宣言するための正しい構文は何ですか。

SQLiteデータ型のドキュメント から:

1。2日付と時刻のデータ型

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

  • [〜#〜] text [〜#〜]as ISO8601 string( "YYYY-MM-DD HH:MM:SS.SSS")。
  • [〜#〜] real [〜#〜]ユリウス日数、紀元前4714年11月24日のグリニッジでの正午からの日数。先発グレゴリオ暦によると。
  • [〜#〜] integer [〜#〜]UNIX時間、1970-01-01 00:00:00UTCからの秒数。

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

好きなものを選んでください。私はTEXTかINTEGERに行きます。 INTEGERはより高速になります。 1970年以降の日付(生年月日など)を保存する必要がある場合は、TEXTを使用します。現在および将来の作成時間/変更時間などを保存する必要がある場合は、INTEGERを使用してください。

次に知りたいのは、その後に日付を挿入する方法です。

PreparedStatement#setString() または #setLong() をそれぞれ使用します。

そして、私が知りたい3番目のことは、日付を選択する方法です。たとえば、2010年5月1日から2010年6月5日までの日付を含むすべての行を選択します。

これには、標準のSQL BETWEEN句を使用します。最初に、 組み込みの日付と時刻の関数 を使用して日付を適宜変換する必要があります。

34
BalusC

日付列を宣言するための便利な構文は次のとおりです。

"CREATE TABLE "
            + "my_table"
            + "(date_time " 
            + " DATETIME DEFAULT CURRENT_TIMESTAMP);");

これにより、デフォルトで挿入された値が現在の日時になります。または、CURRENT_DATE、またはCURRENT_TIMEの値を使用できます。行を作成するたびにタイムスタンプを手動で挿入する必要はありません。

このアプローチについては、ここで読むことができます: AndroidはSQLiteデータベースに日時値を挿入します

3
IgorGanapolsky