生のクエリを使用せずにcontentvaluesを使用してsqliteデータベースに日時データを挿入するにはどうすればよいですか?
datetime('now')は時刻ではなく自分自身(テキスト)を挿入します。現在の時刻に追加の時間を追加できますか?
たとえば、ボタン「1HOUR」を押すと、現在の時刻+1時間がsqliteデータベースに挿入されます。ありがとうございます。ちょっと混乱しています。
日付/時刻をミリ秒に変換すると、が得られますlong
。long
次に、データベースに値を挿入するだけです。
日付/時刻の値がミリ秒単位の場合は、それらを一緒に追加できます。
-編集済み--
Date myDate = new Date();
long timeMilliseconds = myDate.getTime();
//add 1 hour
timeMilliseconds = timeMilliseconds + 3600 * 1000; //3600 seconds * 1000 milliseconds
//To convert back to Date
Date myDateNew = new Date(timeMilliseconds);
SQLiteでは、Javalong
値はとして保存されますint
。
Javaラッパー「ContentValues」を使用して日時関数を使用することはできません。この方法で実装できます:
1)SQLiteDatabase.execSQL(生のSQLクエリ)を使用できます
dbObj.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
2)SimpleDateFormatを使用できます
// setting the format to sql date time
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
ContentValues initialValues = new ContentValues();
initialValues.put("date_time", dateFormat.format(date));
long recordId = mDb.insert(DB_TABLE_NAME, null, initialValues);
3)日付値を(ロングタイプ)ミリ秒としてデータベースに保存し、表示するためにフォーマットできます。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
System.out.println(getDate(82233213123L, "dd/MM/yyyy hh:mm:ss.SSS"));
// Return date in specified format.
// milliSeconds Date in milliseconds
// dateFormat Date format
// return date as string in specified format
public static String formatDate(long milliSeconds, String dateFormat)
{
DateFormat formatter = new SimpleDateFormat(dateFormat);
// Create a calendar object that will convert the date and time value in milliseconds to date.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
return formatter.format(calendar.getTime());
}
}
1秒=1000ミリ秒なので、1時間を追加する場合は、この式を使用します
currentTImeMilli + (60 * 60 * 1000)