mariadb sql 默认值 unix_timestamp

mariadb sql default unix_timestamp

我无法将 table 中的列从时间戳类型更改为整数 (unix)。对于 mysql 下面的两个查询,不要让我执行它们并出现错误 1064:“... SQL 语法错误...” 和我的 sql 编辑器(MYSQL WORKBENCH) 在默认后立即用红色突出显示 UNIX_TIMESTAMP 函数并表示:"UNIX_TIMESTAMP" is not valid at this position, expecting: DATE, TIMESTAMP, TIME, INT number, LONG number, UNLONGLONG number, ...

我做错了什么?

ALTER TABLE `lamourka`.`profile` CHANGE `updated_at` `updated_at` 
int(11) NOT NULL DEFAULT UNIX_TIMESTAMP() ON UPDATE UNIX_TIMESTAMP()

ALTER TABLE `lamourka`.`profile` MODIFY COLUMN `updated_at` 
    int(11) NOT NULL DEFAULT UNIX_TIMESTAMP() ON UPDATE UNIX_TIMESTAMP()

我正在使用 MariaDB。 SELECT 版本 (): 10.3.9-MariaDB-1:10.3.9+maria~bionic

MySQL 不允许使用函数设置默认值。

我建议使用 TIMESTAMP 数据类型。您可以使用 UNIX_TIMESTAMP().

在秒内检索值

Demo on DB Fiddle:

CREATE TABLE mytable (id int, updated_at date);
ALTER TABLE mytable MODIFY column updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

INSERT INTO mytable(id) values(1);
SELECT id, UNIX_TIMESTAMP(updated_at) updated_at FROM mytable;

| id  | updated_at |
| --- | ---------- |
| 1   | 1570695109 |

另一种选择是将列数据类型保持为整数,然后在每次插入时手动调用 UNIX_TIMESTAMP()