5

生のクエリを使用せずにcontentvaluesを使用してsqliteデータベースに日時データを挿入するにはどうすればよいですか?

datetime('now')は時刻ではなく自分自身(テキスト)を挿入します。現在の時刻に追加の時間を追加できますか?

たとえば、ボタン「1HOUR」を押すと、現在の時刻+1時間がsqliteデータベースに挿入されます。ありがとうございます。ちょっと混乱しています。

4

2 に答える 2

6

日付/時刻をミリ秒に変換すると、が得られますlonglong次に、データベースに値を挿入するだけです。

日付/時刻の値がミリ秒単位の場合は、それらを一緒に追加できます。

-編集済み--

    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

于 2012-10-28T01:36:32.420 に答える
1

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)
于 2012-10-28T01:44:48.977 に答える