1

我正在尝试从 ac# 应用程序在我的表中插入当前日期,我这样做的方式如下:

sqlite_cmd.CommandText = "INSERT INTO tablename (column1,creation_date) VALUES ('abcd_" + (id) + "',CURRENT_TIMESTAMP);";
                sqlite_cmd.ExecuteNonQuery();

但这会引发错误,指出 CURRENT_TIMESTAMP 不是有效字段。我使用 Firefox 的 sqlite manager 插件仔细检查了上述查询,它似乎工作正常。

PS - 上述查询中的 id 是一个由 c# 应用程序设置的 int 变量。

4

2 回答 2

3

CURRENT_TIMESTAMP仅在列定义中有效。

作为表达式,您可以使用DATETIME('NOW'). 尝试:

 sqlite_cmd.CommandText = "INSERT INTO tablename (column1,creation_date) VALUES ('abcd_" + (id) + "', DATETIME('NOW'));";
于 2013-10-10T10:25:27.660 回答
2

尝试使用这个:

using(SQLiteCommand cmd = new SQLiteCommand(yourSqliteConnection))
{
cmd.CommandText = "INSERT INTO tablename (column1,creation_date) VALUES (?,?)";
cmd.Command.Parameters.AddWithValue("@p1",string.Format("abcd_{0}",id));
cmd.Command.Parameters.AddWithValue("@p2",DateTime.Now.ToString("s"));
cmd.CommandType= CommmandType.Text;

cmd.ExecuteNonQuery();
}

DateTime.Now.ToString("s")表示将此日期时间转换为XSD格式。SQLite 本身没有 DateTime 格式。所以你需要做的就是把它转换成固定格式的TEXT,然后根据这个格式插入和搜索。

XSD 是 DateTime 的固定格式。如果 DateTime 的格式改变,它不会改变。

请记住,当您需要基于 DateTime 执行搜索 (SELECT) 命令时,请在 SQLite 中执行任何操作之前尝试将其转换为如上所示。

于 2013-10-10T10:10:27.357 回答