日期 mysql 的创建日期和上次更新日期
Posted
技术标签:
【中文标题】日期 mysql 的创建日期和上次更新日期【英文标题】:Date For date created and date last updated for mysql 【发布时间】:2017-01-29 16:33:45 【问题描述】:`DateCreated` datetime NOT NULL,
`DateLastUpdated` datetime NOT NULL,
它不起作用,它在日期和时间上显示 0,我正在尝试找出如何将其更改为 CURRENT_DATE()
以仅记录没有时间的日期,我怎样才能做到这一点来制作 DateCreated 记录提交日期,DateLastUpdated 记录更新日期。这是我的第一个数据库,无法解决,请有人帮忙。谢谢
【问题讨论】:
放一些代码.. !! 请出示插入代码 您使用什么 PHP 代码将当前日期插入 DB? ID Varchar(45) NOT NULL,Age
int(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】:据我了解,您想要一个仅包含日期的 DateCreated
和 DateLastUpdated
列吗?然后你应该使用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_table
和 my_schema
替换为您的架构和表的正确名称。
希望这行得通。
【讨论】:
什么是 my_schema? 数据库的名称。 (如果您不知道名称,则应在代码中包含的 config.php 中定义它。)以上是关于日期 mysql 的创建日期和上次更新日期的主要内容,如果未能解决你的问题,请参考以下文章
使用 Firebase 3 从 FIRUser 获取创建日期和上次登录日期