MySQL列,当数据插入行时自动填充TIME

时间:2017-05-12 04:27:40

标签: mysql

我想询问是否可以创建一个MySQL表,只要插入新行,该表就会自动填充时间列。我已经通过各种关于TIMESTAMPS的网站和仅从DATETIME选择时间的方法进行了研究,但是没有运气,我无法找到我需要的东西。我正在使用Workbench。

这是我的表格查询

create table dev_monitor(
device_id varchar(50),
power_coms float,
date DATE,
time TIME);

我使用了一个自动填充日期的触发器。

CREATE TRIGGER task_creation_timestamp BEFORE INSERT ON dev_monitor 
FOR EACH ROW
SET NEW.date = NOW();

但是现在我离开了TIME专栏。

Empty Time Column

这是我将要使用的查询。

insert into dev_monitor(device_id, power_coms)
values('aircond2', '3.5');

请注意,我只想插入设备ID和功耗,每当我插入这两个数据时,我都试图让表自动填充日期和时间,但是在单独的列中。

3 个答案:

答案 0 :(得分:1)

如此帖How do you set a default value for a MySQL Datetime column?所示,您可以使用时间戳。我不知道是否可以只填写时间,但如果您不需要DATE信息,您只能稍后选择时间或在其上创建一个View。

e.g。 CREATE VIEW v1 AS SELECT *, TIME(yourDateTime) AS time FROM yourTable;

答案 1 :(得分:1)

鲁本。您可以尝试以下代码。

DELIMITER ;;
CREATE TRIGGER device
BEFORE INSERT ON device
FOR EACH ROW
BEGIN
    IF new.date IS NULL THEN
        SET NEW.date = CURDATE();
        SET NEW.time = CURTIME();
    END IF;
END
;;

您可以在此链接中进一步参考。 Refer

答案 2 :(得分:0)

您可以编辑表的结构并将列'date'和'time'组合到单个列中,并使用数据类型'DATETIME'并将默认值设置为'NOW()'或CURRENT_TIMESTAMP()