Php 插入当前时间时,如何计算上一次时间和总时间?

Php 插入当前时间时,如何计算上一次时间和总时间?,php,mysql,datetime,Php,Mysql,Datetime,我正在尝试将当前项目工期和项目名称存储在表中。也包括当前持续时间、上一个持续时间和总持续时间 我正在表单中输入项目名称和当前工期,并将其存储到表中,但在添加更多项目时,如何计算上一个工期和总工期 projects_id - int (auto increment) project - varchar current_time - int previous_time - int total_time - int 首先,我将把上一次时间和总时间初始化为0 然后,在插入新行时,我将更新项目名称和当前

我正在尝试将当前项目工期和项目名称存储在表中。也包括当前持续时间、上一个持续时间和总持续时间

我正在表单中输入项目名称和当前工期,并将其存储到表中,但在添加更多项目时,如何计算上一个工期和总工期

projects_id - int (auto increment)
project - varchar
current_time - int
previous_time - int
total_time - int
首先,我将把
上一次时间
总时间
初始化为0


然后,在插入新行时,我将更新项目名称和当前时间,必须自动计算上一次的时间和总时间。

您可以考虑的表格结构:

mysql> desc project;
+---------------+-------------+------+-----+---------------------+----------------------------+
| Field         | Type        | Null | Key | Default             | Extra                      |
+---------------+-------------+------+-----+---------------------+----------------------------+
| project_id    | int(1)      | NO   | PRI | NULL                | auto_increment             |
| project       | varchar(20) | YES  |     | NULL                |                            |
| current_t     | timestamp   | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP|
| previous_time | timestamp   | NO   |     | 0000-00-00 00:00:00 |                            |
| total_time    | time        | YES  |     | NULL                |                            |
+---------------+-------------+------+-----+---------------------+----------------------------+
5 rows in set (0.01 sec)
样本数据

mysql> select * from project;
+------------+---------+---------------------+---------------------+------------+
| project_id | project | current_t           | previous_time       | total_time |
+------------+---------+---------------------+---------------------+------------+
|          1 | test    | 2014-03-06 12:36:34 | 2014-03-06 10:27:19 | 00:00:00   |
+------------+---------+---------------------+---------------------+------------+
1 row in set (0.00 sec)
SQL来执行您正在查找的更新:

REPLACE INTO project (project_id,previous_time,total_time) 
SELECT project_id,current_t,total_time + TIMEDIFF(NOW(),current_t) 
FROM project 
WHERE project_id = 1
更新表:

mysql> select * from project;
+------------+---------+---------------------+---------------------+------------+
| project_id | project | current_t           | previous_time       | total_time |
+------------+---------+---------------------+---------------------+------------+
|          1 | NULL    | 2014-03-06 12:41:22 | 2014-03-06 12:36:34 | 00:04:48   |
+------------+---------+---------------------+---------------------+------------+
1 row in set (0.00 sec)

显示您的表格说明。您能发布一个具有预期输出的示例数据集吗?@Ravinder我已经用表格更新了问题description@NishantShrivastava如果我添加项目名称和当前时间,比如样本和8(小时),它将像样本8小时一样存储。然后,下次如果我将当前时间添加到同一项目中,则必须将前一时间添加到当前时间
current\u TIMESTAMP DEFAULT current\u TIMESTAMP ON UPDATE current\u TIMESTAMP
上,同时将
previous\u time
切换到
DATETIME
TIMESTAMP
,并根据这两个值更新总时间。事实上,您甚至不需要总时间,因为您可以在查询过程中动态地执行该操作。您可以检查是否需要自动更新当前\u t。如果不希望,请从当前\t字段中删除“更新当前\u时间戳”属性。。。并相应地在replace查询中添加位。@Prix感谢您的详细解释。。我设置了数据库表,但不知道php插入syntax@user3239311错了人,这是尼桑的解释。哦,sry@NishantShrivastava非常感谢你。你能告诉我php代码的示例吗?@Prix无论如何,再次感谢你。我仍然无法使用它。