我正在使用MySql,并且我的字段类型为BIGINT(20)。
我意识到我可以将CURRENT_TIMESTAMP用作默认的as explained here。
但是,默认情况下,我如何分配类似javascript的时间戳(包括毫秒数)?
如果没有其他方法可以得到毫秒级的时间戳,那么我很高兴在末尾加上“ 000”。
更新:请注意,该问题是基于将列类型保留为BIGINT(20)
答案 0 :(得分:2)
您的问题的基本答案是您不能,因为BIGINT
列不能将CURRENT_TIMESTAMP
作为默认值。
如果您将列类型更改为TIMESTAMP(3)
,它将以3个小数位精度(即,精确到毫秒)记录时间戳。您最多可以有6个小数位。请参见manual。在这种情况下,您还需要将默认值更改为CURRENT_TIMESTAMP(3)
。
一种使它出现(好像该列是BIGINT
)的解决方法是,使用VIEW
在表上创建一个UNIX_TIMESTAMP
来读取eg < / p>
CREATE VIEW jobs_us AS
SELECT ..., UNIX_TIMESTAMP(added) AS added
FROM jobs
并使用INSERT
和UPDATE
触发器使用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