Добавить час к типу данных TIME

0
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 и т.д. Для всех записей).

Любая помощь была бы очень признательна!

Благодарю.

  • 0
    Не так хорошо знаком с MySQL, но в MSSQL вам не понадобится оператор SELECT. Просто установите его в значение функции. ... SET endTime = DATEADD(hh,1,startTime)
  • 1
    @tom Том. , , Какую базу данных вы используете? Синтаксис предполагает SQL Server, но ошибка предполагает MySQL. Кроме того, почему время окончания в другой таблице отличается от времени начала?
Показать ещё 2 комментария
Теги:
date
time
dateadd

2 ответа

1
Лучший ответ

Что вы ищете: DATE_ADD(startTime, INTERVAL 1 HOUR)

  • 0
    Это оно! Огромное спасибо!!
0

В SQL Server вы можете сделать что-то вроде этого:

UPDATE g
    SET endTime = DATEADD(hour, 1, gi.startTime)
FROM Game g JOIN
     GameInfo gi
     ON g.idGame = gi.idGame;

Независимо от базы данных, мне кажется странным, что время окончания находится в другой таблице с самого начала.

  • 0
    Я понял, что мои имена не слишком ясны, startTime - это время, когда начинается игра, а endTime - это время, когда сотрудники могут идти домой (возможно, будет проще изменить его на время отъезда).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню