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

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

`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(); ?>
  • 您的代码是用于在数据库中创建一个表,那么您在其中遇到了什么问题?

标签: php mysql database phpmyadmin


【解决方案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 中定义它。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2019-02-21
  • 2022-10-02
  • 1970-01-01
相关资源
最近更新 更多