在mysql表中添加带有随机时间戳的列

时间:2018-10-10 23:30:12

标签: mysql

我想在现有的mysql表中添加一个新列,其默认值为random timestamp。随机时间戳记应介于(现在+ 3小时)和(现在+3.5小时)之间。我在下面的sql命令中使用过,并且显示错误:

alter table latency_adjustment_rules 
add column expiration_timestamp TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) + FLOOR(RAND() * 3600)) + 10800

错误:

错误1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第1行的'+ FLOOR(RAND()* 3600))+ 10800'附近使用正确的语法

有人可以建议我的mysql语句出什么问题吗?

2 个答案:

答案 0 :(得分:1)

这是在插入时插入TRIGGER的方式:

DELIMITER \\
CREATE TRIGGER latency_adjust
BEFORE INSERT ON latency_adjustment_rules
FOR EACH ROW
BEGIN
    IF NEW.expiration_timestamp IS NULL THEN
        SET NEW.expiration_timestamp = NOW() + INTERVAL (FLOOR(RAND() * 3600) + 10800) SECOND;
    END IF;
END\\

我在rextester上创建了一个小型演示示例。

答案 1 :(得分:0)

您不能以这种方式定义默认值。最好的办法是改用TRIGGER。请查看手册中的示例。

您还需要检查如何指定时间间隔。您可能想要使用Unix时间戳(MySQL时间戳位于以前的2018-10-10 23:14:37中,并且无法通过添加秒来递增,因此您需要使用DATE_ADD)