1

Java から sqlite DB に日時を挿入しようとしましたが、様子がおかしいです。

コードを使用しCalendar.getInstance().getTime()て挿入すると、テーブルの値は (たとえば) 1359960520718 になります。文字列を使用2010-01-01してテーブルに挿入すると、値は通常の 2010-01-01 です。

しかし、文字列を使用2010-21-51してテーブルに挿入すると、テーブルの値は 2010-21-51 になります。それは無効な日付です。どうしたの?

4

2 に答える 2

8

これは、SQLite が動的に型付けされるためです。任意の型の値を任意の列に書き込むことができ、文句を言うことはありません-別の型に黙って格納する場合があります。

documentationによると、日時は次のように保存できます

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

あなたの場合、SQLite は無効な日付を INTEGER 形式に変換できず、代わりに標準文字列として保存することを余儀なくされました。この日付は無効ですが、SQLite は気にしません。

于 2013-02-04T07:12:17.480 に答える
1

次のように、Calendar.getInstance().getTime() のパラメーターを使用して Date 型の日付を新規作成できます。

Date date = new Date(Calendar.getInstance().getTime()); 

次に、SimpleDateFormate を使用して、必要な文字列として日付をフォーマットする必要があるかもしれません。

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String timeStr = df.format(date);

次に、timeStrをテーブルに挿入します...データベースのinsertステートメントで何かを行う場合は、他の方法もあります

于 2013-02-04T07:13:25.503 に答える