我有一个 INT (11) 列用于存储当前时间戳(以秒为单位)。查询看起来像:
INSERT INTO `abc` (id, timestamp) VALUES ('', UNIX_TIMESTAMP ( NOW () ) )
我不知道为什么,但日期没有更改。当我发送查询时,列值没有改变并不重要。它有 1342692014 值,但我不知道为什么。
时间戳是否有任何选项或其他功能?我必须以秒为单位存储日期。
最佳答案
您永远不会在查询中引用 timestamp
column。你只有一个字符串:
INSERT INTO `abc` (id, 'timestamp') VALUES ('', UNIX_TIMESTAMP ( NOW () ) )
^^^^^^^^^^^
编辑:
我用你更新的代码得到了这个:
ERROR 1630 (42000): FUNCTION test.NOW does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
假设它仍然不是实际代码并且在修复语法错误后,我无法重现您的结果。我有根据的猜测是 id
是一个自动递增的整数主键,您当前的 SQL 模式使 MySQL 将 ''
作为 NULL
并插入一个新行...但我还没有真正检验过这个假设。
我的工作代码是这样的:
CREATE TABLE `abc` (
`pk` INT(10) NOT NULL AUTO_INCREMENT,
`id` VARCHAR(10) NULL DEFAULT NULL,
`timestamp` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`pk`)
)
ENGINE=InnoDB;
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP());
-- Wait a few seconds
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP());
-- Wait a few seconds
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP());
SELECT timestamp FROM abc WHERE id='';
...并返回这个:
+------------+
| timestamp |
+------------+
| 1342694445 |
| 1342694448 |
| 1342694450 |
+------------+
3 rows in set (0.00 sec)
关于mysql 查询 - 插入数据 unix_timestamp ( now ( ) ) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11558418/