当前位置:  开发笔记 > 数据库 > 正文

如何在Android应用程序中插入日期时间设置为"now"的SQLite记录?

如何解决《如何在Android应用程序中插入日期时间设置为"now"的SQLite记录?》经验,为你挑选了5个好方法。

比如说,我们创建了一个表格:

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')"文本.



1> e-satis..:

您不能使用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);


java.util.Date,但我相信你也可以用java.sql.Date日期来做.
是java.util.Date还是java.sql.Date?

2> Gautier Hayo..:

在我的代码中,我DATETIME DEFAULT CURRENT_TIMESTAMP用作列的类型和约束.

在您的情况下,您的表定义将是

create table notes (
  _id integer primary key autoincrement, 
  created_date date default CURRENT_DATE
)


你读取值时使用哪种java类型?

3> Rikin Patel..:

方法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);



4> sooniln..:

您可以使用几种选项:

    您可以尝试使用字符串"(DATETIME('now'))".

    自己插入日期时间,即使用System.currentTimeMillis()

    创建SQLite表时,请将created_date列的默认值指定为当前日期时间.

    使用SQLiteDatabase.execSQL直接插入.



5> Jared Harley..:

对我来说,问题看起来像是"datetime('now')"作为字符串而不是值发送.

我的想法是找到一种方法来获取当前日期/时间并将其作为日期/时间值发送到您的数据库,或者找到一种方法来使用SQLite的内置(DATETIME('NOW'))参数

在这个SO.com问题上查看引导者 - 他们可能会引导您朝着正确的方向前进.

希望这有帮助!

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有