创建记录时自动设置Javascript时间戳(以毫秒为单位)

时间:2019-04-01 07:16:00

标签: mysql

我正在使用MySql,并且我的字段类型为BIGINT(20)。

我意识到我可以将CURRENT_TIMESTAMP用作默认的as explained here

但是,默认情况下,我如何分配类似javascript的时间戳(包括毫秒数)?

如果没有其他方法可以得到毫秒级的时间戳,那么我很高兴在末尾加上“ 000”。

更新:请注意,该问题是基于将列类型保留为BIGINT(20)

1 个答案:

答案 0 :(得分:2)

您的问题的基本答案是您不能,因为BIGINT列不能将CURRENT_TIMESTAMP作为默认值。

如果您将列类型更改为TIMESTAMP(3),它将以3个小数位精度(即,精确到毫秒)记录时间戳。您最多可以有6个小数位。请参见manual。在这种情况下,您还需要将默认值更改为CURRENT_TIMESTAMP(3)

Demo on dbfiddle

一种使它出现(好像该列是BIGINT)的解决方法是,使用VIEW在表上创建一个UNIX_TIMESTAMP来读取eg < / p>

CREATE VIEW jobs_us AS
SELECT ..., UNIX_TIMESTAMP(added) AS added 
FROM jobs

并使用INSERTUPDATE触发器使用TIMESTAMP将整数值转换为FROM_UNIXTIME格式,例如

CREATE TRIGGER jobs_added BEFORE INSERT ON jobs
FOR EACH ROW
BEGIN
    IF NEW.added IS NOT NULL THEN
        SET NEW.added = FROM_UNIXTIME(NEW.added);
    END IF;
END