_sqlite database
_があります
_ private static final String DB_PROCESS_CREATE = "create table "
+ DB_TABLE_PROCESS + "(" + PROCESS_ID
+ " integer primary key autoincrement, "
+ PROCESS_DATE + " date);";
_
db.execSQL(DB_PROCESS_CREATE);
を作成します
このデータベースに日付値を追加する方法は?私は試した :
_String date = new SimpleDateFormat("yyyy.MM.dd").format(Calendar
.getInstance().getTime());
ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE,Date.valueOf(date));
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));
_
しかし、その後error
を取得します:
_"The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Date)".
_
これで、データベースに日付を挿入するときに、このコードを使用できます。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
データベースに文字列「date」を挿入します
Sqliteの日付形式は次の形式である必要があります。
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD
詳細については、以下をご覧ください。 http://www.sqlite.org/lang_datefunc.html
SQLiteに日付を直接保存することはできません。たとえば、整数値として保存できます。
ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE, new Date().getTime());
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));
この場合、日付フィールドは整数として宣言する必要があります。
private static final String DB_PROCESS_CREATE = "create table "
+ DB_TABLE_PROCESS + "(" + PROCESS_ID
+ " integer primary key autoincrement, "
+ PROCESS_DATE + " integer);";
SQLiteのドキュメントから:SQLiteには、日付や時刻を保存するためのストレージクラスがありません。代わりに、SQLiteの組み込みの日付と時刻関数は、日付と時刻をTEXT、REAL、またはINTEGER値として保存できます。
http://www.sqlite.org/datatype3.html を参照してください
日付をデータベースに入れる最良の方法は、その長い値を使用することです。私はあなたがやっていることをやろうとしましたが、同様のエラーがありました。文字列の代わりに、数値を入力します。長い値をとることができますが、これはある種のミリ秒値だと思います。その後、引き出したときに再変換できます。