gpt4 book ai didi

php - 动态更新数据库列

转载 作者:行者123 更新时间:2023-11-29 04:09:07 25 4
gpt4 key购买 nike

mysql> describe break;
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| start | datetime | YES | | NULL | |
| end | datetime | YES | | NULL | |
| duration | datetime | YES | | NULL | |
| date | datetime | YES | | NULL | |
| employee_id | int(11) | NO | MUL | NULL | |
+-------------+----------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

我想使用上表中的开始值和结束值计算(并更新)“持续时间”列。例如:

UPDATE break SET duration=TIMEDIFF(start, end) WHERE employee_id=1;

唉,这会将持续时间列设置为 0000-00-00 00:00:00

mysql> select * from break\G;
*************************** 1. row ***************************
id: 30
start: 2013-08-06 15:43:17
end: 2013-08-06 15:55:42
duration: 0000-00-00 00:00:00
date: 2013-08-06 15:43:17
employee_id: 1
1 row in set (0.00 sec)

帮助

最佳答案

来自documentation (强调我的):

TIMEDIFF() returns expr1 – expr2 expressed as a time value.

duration 更改为键入 TIME,它应该可以工作。

请注意,您正在架构中创建冗余。这通常是一件坏事。如果 endstart 更改并且您不更新 duration 怎么办?最好使用 View 并返回从 endstart 计算的 TIMEDIFF

关于php - 动态更新数据库列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18084206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com