MySQL - 插入时触发 HOUR ('time')

标签 mysql

我有一个包含字段“timeduration”的表。目前,当我选择“timeduration”值时,我正在执行 HOUR('timeduration') 来获取以小时为单位的时间。我想在将数据插入表时进行此计算,因此将小时值放入其自己的列中。

|  date    |  timeduration  |  hour
  12-12-14    01:00:00         1

我已经研究过触发器,但不确定如何解决这个问题,或者我缺少更简单的方法吗?

感谢您的帮助!

最佳答案

是的,BEFORE INSERT 和 BEFORE UPDATE 触发器就可以做到这一点。这是让 MySQL 根据分配给 timeduration 列的值自动填充 hour 列中的值的唯一方法。

以下是 BEFORE INSERT 触发器的示例。

 DELIMITER $$

 CREATE TRIGGER mytable_bi 
 BEFORE INSERT ON mytable
 FOR EACH ROW
 BEGIN
    SET NEW.hour = HOUR(NEW.timeduration);
 END$$

 DELIMITER ;

如果您希望在 UPDATE 语句修改 timeduration 值时保持 hour 同步,您可能还需要相应的 BEFORE UPDATE 触发器。

关于MySQL - 插入时触发 HOUR ('time'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727838/

相关文章:

php - 如何在一组 PHP MySQL 选择查询后插入水平线?

mysql - Rails 有很多 :through relationship causing stack level too deep

mysql - 基于 session 计数器配对事件并在 mySQL 中查找时间增量

PHP/MySQL : Data from MySQL not display in Select Option (dropdown list)

java - 从 Java 连接 PHP 时出现 IllegalStateException

php - 在 phpMyAdmin 中找不到权限

sql - 多个表中的唯一 ID [MySQL]

php - PHP 结果中的未知数组

php - 通过php检查用户名是否存在于mysql表中?

javascript - 使用时间轴谷歌图表 api 与 php - 数据表初始化