使用存储过程将自动日期字段添加到 MYSQL 数据库

Posted

技术标签:

【中文标题】使用存储过程将自动日期字段添加到 MYSQL 数据库【英文标题】:Adding an automatic date field to MYSQL database using stored procedure 【发布时间】:2019-09-03 05:49:10 【问题描述】:

我有一个名为 entry 的表。

表格有 2 列称为 id & name

当用户填写姓名时,提交姓名保存在条目表中。

现在我也想保存日期。但是这个日期需要自动填入数据库。即填写名称时,我选择的国家/地区的当前时区应自动保存在表格中。

我已经在 table 中创建了日期列。现在我该怎么做?是否有任何存储过程可以帮助解决这个问题?

我无法在我的 php 文件中编写任何查询。它应该在 mysql 端完成。

请帮忙

【问题讨论】:

您可以使用默认约束来填充日期。请查看:***.com/questions/2095289/… 【参考方案1】:

您也可以使用trigger。使用after insert,这样每当您添加记录时,它都会自动更新日期。

我不是普通的mysql 用户,所以语法可能不同,但你会明白的。请找到链接以获取更多信息。 TRIGGER.

CREATE TRIGGER inserttable 
AFTER INSERT 
ON table1 
FOR EACH ROW 
   NEW.DATECOL = (SELECT CURDATE());
END

如果存在任何语法问题,请随时编辑此代码。

【讨论】:

【参考方案2】:

一般来说,创建日期/时间可以通过使用默认值的表定义来处理:

create table t (
    . . . , 
    created_at timestamp default current_timestamp
);

这比为此目的定义触发器要简单得多。

请注意,这会存储日期和时间值。我不认为 MySQL 让你只存储时间。但是因为您提到了时区,所以这可能是您真正想要的。

【讨论】:

但该表之前已经创建,并且 table 中有一些条目。对于上一个条目,日期将像 00.00.000 这样。所以请检查。我只需要存储 date ,即使时间为零

以上是关于使用存储过程将自动日期字段添加到 MYSQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 生成日期表

MySQL时间字段TIMESTAMPDATETIME(自动更新毫秒存储)

MySQL为每一行自动存储日期时间

MySQL存储过程手册,及创建存储过程:循环为所有表添加字段

在 PHP/MySQL 中将日期时间存储为 UTC

数据库中存储日期的字段类型到底应该用varchar还是datetime