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)
Я бы хотел рассчитать (и обновить) столбец «duration», используя начальные и конечные значения из приведенной выше таблицы. Например:Динамическое обновление столбца базы данных
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)
помощь
Зачем вам хранить эту же информацию дважды? т. е. у вас есть начало и конец, зачем нужно хранить разницу? Также ваш столбец 'duration' не должен быть datetime, потому что это длительность, а не момент времени. Я бы, вероятно, использовал «int» и сохранил количество секунд. – leftclickben