我有一个现有的sqlite数据库,其中有一个表,如下所示:
+------+----------+--------------------+----------------+
|LogID | UsedOn | UserID | Other fields() |
+------+----------+--------------------+----------------+
| 1 | | soemid03 | SomeDataHere |
+------+----------+--------------------+----------------+
Etc....
UsedOn字段当前为空,因为当我制作表时,我不小心忘记将字段类型设置为时间戳类型,所以应用程序只是插入其他列,并将此列留空。
因为我想在以后的某个时候使用时间戳进行比较,所以我想用当前时间戳更新表中所有行的这一列,我想我可以使用sqlite中的datetime((来实现这一点。一些日期和时间将在几天后过期并不重要,但字段不能为空,否则我的比较代码将不起作用。
我尝试使用:
UPDATE tablename SET UsedOn=datetime()
这被接受为一个有效的查询,但它似乎什么都没做,这一列仍然是空的。
也许我在某种程度上做错了?
我只能通过手动查询或使用"SQLite Administrator"应用程序(来自http://sqliteadmin.orbmu2k.de/)。我不能使用其他任何东西,因为这是可用的,并且我不允许安装任何其他数据库管理工具。当我试图编辑表中的任何一行以手动添加日期时间时,它不会被接受,但我只是认为这是因为应用程序试图插入我键入的字符串(即使格式正确(,而它不是字符串字段类型。
我在SQLite Administrator中尝试了您的代码,但它不起作用,而它应该起作用
有效的是:
UPDATE tablename
SET UsedOn = CURRENT_TIMESTAMP
这并不意味着您的代码是错误的
如果您使用任何其他工具,如SQLite的DB Browser,这两种解决方案都可以工作。