UPDATE Game
SET endTime = (SELECT DATEADD(hh, 1, startTime)
FROM GameInfo
WHERE Game.idGame = GameInfo.idGame);
Я хочу, чтобы часы endTime были на 1 час позже, чем startTime, когда я запускаю этот код, я получаю ошибку:
ERROR 1728 (HY000): Cannot load from mysql.proc. The table is probably corrupted
Я считаю, что это связано с тем, что поля startTime и endTime оба типа данных TIME, но я не могу найти аналогичную функцию для типа данных TIME?
UPDATE Game
SET endTime = (SELECT HOUR(startTime)+1
FROM GameInfo
WHERE Game.idGame = GameInfo.idGame);
Будет почти работать, поскольку он увеличивает количество часов, но затем он сохраняет только часы в виде числа (в результате в 00:00:19 и т.д. Для всех записей).
Любая помощь была бы очень признательна!
Благодарю.
Что вы ищете: DATE_ADD(startTime, INTERVAL 1 HOUR)
В SQL Server вы можете сделать что-то вроде этого:
UPDATE g
SET endTime = DATEADD(hour, 1, gi.startTime)
FROM Game g JOIN
GameInfo gi
ON g.idGame = gi.idGame;
Независимо от базы данных, мне кажется странным, что время окончания находится в другой таблице с самого начала.
... SET endTime = DATEADD(hh,1,startTime)