日期 mysql 的创建日期和上次更新日期

Posted

技术标签:

【中文标题】日期 mysql 的创建日期和上次更新日期【英文标题】:Date For date created and date last updated for mysql 【发布时间】:2017-01-29 16:33:45 【问题描述】:

我使用 phpmysql 中输入了一个表,代码如下:

`DateCreated` datetime NOT NULL,
`DateLastUpdated` datetime NOT NULL,

它不起作用,它在日期和时间上显示 0,我正在尝试找出如何将其更改为 CURRENT_DATE() 以仅记录没有时间的日期,我怎样才能做到这一点来制作 DateCreated 记录提交日期,DateLastUpdated 记录更新日期。这是我的第一个数据库,无法解决,请有人帮忙。谢谢

【问题讨论】:

放一些代码.. !! 请出示插入代码 您使用什么 PHP 代码将当前日期插入 DB? ID Varchar(45) NOT NULL, Ageint(10) unsigned NOT NULL DEFAULT '0', Email DECIMAL(7,2) NOT NULL DEFAULT 99999.99, PhoneNumber varchar(120) NOT NULL, DateCreated datetime NOT NULL, DateLastUpdated datetime NOT NULL, PRIMARY KEY (ID) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; if (mysql_query($sql,$dbc)) echo "表创建成功。"; else echo "表已经退出"; mysql_close(); ?> 您的代码是用于在数据库中创建一个表,那么您在其中遇到了什么问题? 【参考方案1】:

据我了解你的问题,你需要使用

TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

如果时间戳列定义为NOT NULL,如果您没有分配值或者如果它的值为NULL,MySQL 会将当前时间戳存储在该列中

【讨论】:

TIMESTAMP 据我了解,我的搜索是日期和时间,但我只寻找日期。【参考方案2】:

据我了解,您想要一个仅包含日期的 DateCreatedDateLastUpdated 列吗?然后你应该使用date 作为列的类型。 datetime 总是包含时间。

完成后,您可以使用CURRENT_DATE() 方法作为DateCreated 列的默认值。

对于DateLastUpdated,您需要一个触发器,如下所示:

DELIMITER $$

DROP TRIGGER IF EXISTS new_schema.my_table_BEFORE_UPDATE$$
USE `my_schema`$$
CREATE DEFINER = CURRENT_USER TRIGGER `my_schema`.`my_table_BEFORE_UPDATE` BEFORE UPDATE ON `my_table` FOR EACH ROW
BEGIN
    SET NEW.DateLastUpdated = CURRENT_DATE();
END$$
DELIMITER ;

您需要将 my_tablemy_schema 替换为您的架构和表的正确名称。

希望这行得通。

【讨论】:

什么是 my_schema? 数据库的名称。 (如果您不知道名称,则应在代码中包含的 config.php 中定义它。)

以上是关于日期 mysql 的创建日期和上次更新日期的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firebase 3 从 FIRUser 获取创建日期和上次登录日期

Hive - 如何在 Hive 中跟踪和更新增量表的上次修改日期?

创建日期和上次修改日期触发器

VBA填充上次保存的用户和上次保存的文件日期

创建一个根据 Hive 中的订单日期更新的标志

获取上次更新/上载文件的日期