次のように作成されたテーブルがあるとします。
create table notes (_id integer primary key autoincrement, created_date date)
レコードを挿入するには、使用します
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
しかし、date_created列をnowに設定する方法は?明確にするために、
initialValues.put("date_created", "datetime('now')");
正しい解決策ではありません。列を「datetime( 'now')」テキストに設定するだけです。
Javaラッパー "ContentValues"を使用してdatetime関数を使用することはできません。次のいずれかを使用できます。
SQLiteDatabase.execSQL。未加工のSQLクエリを入力できます。
mDb.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
またはJava日時機能:
// set 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_created", dateFormat.format(date));
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
私のコードでは、列の型と制約としてDATETIME DEFAULT CURRENT_TIMESTAMP
を使用しています。
あなたの場合、テーブル定義は
create table notes (
_id integer primary key autoincrement,
created_date date default CURRENT_DATE
)
方法1
CURRENT_TIME – Inserts only time
CURRENT_DATE – Inserts only date
CURRENT_TIMESTAMP – Inserts both time and date
CREATE TABLE users(
id INTEGER PRIMARY KEY,
username TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
方法2
db.execSQL("INSERT INTO users(username, created_at)
VALUES('ravitamada', 'datetime()'");
方法 Java日付関数の使用
private String getDateTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date = new Date();
return dateFormat.format(date);
}
ContentValues values = new ContentValues();
values.put('username', 'ravitamada');
values.put('created_at', getDateTime());
// insert the row
long id = db.insert('users', null, values);
使用できるオプションがいくつかあります。
私には、"datetime('now')"
を値ではなく文字列として送信しているように見えます。
私の考えは、現在の日付/時刻を取得してデータベースに日付/時刻の値として送信する方法を見つけるか、SQLiteの組み込み(DATETIME('NOW'))
パラメーターを使用する方法を見つけることです。
このSO.comの質問 にあるanwsersをチェックしてください-それらは正しい方向にあなたを導くかもしれません。
これがお役に立てば幸いです!
Javaの機能を使用できます:
ContentValues cv = new ContentValues();
cv.put(Constants.DATE, Java.lang.System.currentTimeMillis());
このようにして、dbに数値を保存します。
この番号は次のように解釈できます。
DateFormat dateF = DateFormat.getDateTimeInstance();
String data = dateF.format(new Date(l));
Lを新しいDate(l)に入れる代わりに、日付の列に数字を挿入します。
だから、あなたの日付があります。
たとえば、データベースにこの番号を保存します:1332342462078
しかし、上記のメソッドを呼び出すと、次の結果が得られます:21-mar-2012 16.07.42
@ e-satisの回答に基づいて、「DBTools」クラスでプライベートメソッドを作成したため、現在の日付を追加するのは非常に簡単です。
...
import Java.text.SimpleDateFormat;
import Java.util.ArrayList;
import Java.util.Date;
...
private String getNow(){
// set the format to sql date time
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
return dateFormat.format(date);
}
...
次のように使用します:values.put("lastUpdate", getNow());
このコード例はあなたが望むことをするかもしれません:
私にぴったりの作品:
values.put(DBHelper.COLUMN_RECEIVEDATE, geo.getReceiveDate().getTime());
日付を長く保存します。
式「(DATETIME( 'now'))」を使用してデフォルトのタイムスタンプを挿入しようとしているときに、フィールドが「not null」としてマークされていないことを確認してください