mysql查询 - 插入数据unix_timestamp(now())问题

Ret*_*mus 6 mysql unix time timestamp

我有一个INT(11)列,用于存储当前时间戳,以秒为单位.查询看起来像:

INSERT INTO `abc` (id, timestamp) VALUES ('', UNIX_TIMESTAMP ( NOW () ) )
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但日期没有改变.发送查询时无关紧要,列值不会更改.它有1342692014的价值,但我不知道为什么.

时间戳有任何选项或其他功能吗?我必须以秒为单位存储日期.

Álv*_*lez 10

您永远不会在查询中引用该timestamp .你只有一个字符串:

INSERT INTO `abc` (id, 'timestamp') VALUES ('', UNIX_TIMESTAMP ( NOW () ) )
                       ^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

编辑:

我用你的更新代码得到了这个:

ERROR 1630(42000):FUNCTION test.NOW不存在.检查参考手册中的"功能名称解析和解决方案"部分

假设它仍然不是实际代码,在修复语法错误后,我无法重现您的结果.我有根据的猜测是,这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='';
Run Code Online (Sandbox Code Playgroud)

...并返回此信息:

+------------+
| timestamp  |
+------------+
| 1342694445 |
| 1342694448 |
| 1342694450 |
+------------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)