比如说,我们创建了一个表格:
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()'");
方法3: 使用java Date函数
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'))".
自己插入日期时间,即使用System.currentTimeMillis()
创建SQLite表时,请将created_date列的默认值指定为当前日期时间.
使用SQLiteDatabase.execSQL直接插入.
对我来说,问题看起来像是"datetime('now')"
作为字符串而不是值发送.
我的想法是找到一种方法来获取当前日期/时间并将其作为日期/时间值发送到您的数据库,或者找到一种方法来使用SQLite的内置(DATETIME('NOW'))
参数
在这个SO.com问题上查看引导者 - 他们可能会引导您朝着正确的方向前进.
希望这有帮助!