在Javascript中的sqlite中插入时间戳

时间:2017-09-30 18:38:59

标签: javascript sqlite

我希望Sqlite自动填充时间戳,但Javascript不允许我只传递2个值(如VALUES (?, ?))并让Sqlite处理时间戳的第3个值。我知道我可以使用new Date()提供第3个值,但这不是首选方式。

如果我按原样运行以下代码,则timestamp列全部为null。

这样做的正确方法是什么?

 db.serialize(function () {
        db.run("CREATE TABLE if not exists songs (title TEXT, lyric TEXT, timestamp DATATIME DEFAULT CURRENT_TIMESTAMP)");

        var stmt = db.prepare("INSERT INTO songs VALUES (?, ?, ?)");
        for (var i = 0; i < 10; i++) {
            stmt.run("Title" + i, "Lyric" + i);
        }
        stmt.finalize();

    });

1 个答案:

答案 0 :(得分:1)

如果要使用列的默认值,则只需将其从INSERT中删除:

var stmt = db.prepare("INSERT INTO songs (title, lyric) VALUES (?, ?)");

这里有两点需要注意:

  1. INSERT语句中指定列名称总是一个好主意,因此添加了(title, lyric)。通过这种方式,占位符所指的内容并不含糊。
  2. 您只指定了两列(并让第三列使用其默认值),因此只有两个占位符。