【问题标题】:Add An Hour To TIME Datatype添加一个小时到 TIME 数据类型
【发布时间】:2018-03-07 17:52:05
【问题描述】:
UPDATE Game
SET endTime = (SELECT DATEADD(hh, 1, startTime)
FROM GameInfo
WHERE Game.idGame = GameInfo.idGame);

我想将 endTime 的小时数设置为比 startTime 晚 1 小时,当我运行此代码时出现错误:

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 等)。

任何帮助将不胜感激!

谢谢。

【问题讨论】:

  • 对 MySQL 不太熟悉,但在 MSSQL 中您不需要 SELECT 语句。只需将其设置为函数的值。 ... SET endTime = DATEADD(hh,1,startTime)
  • @tom 。 . .你用的是什么数据库?语法建议使用 SQL Server,但错误建议使用 MySQL。另外,为什么结束时间与开始时间在不同的表中?
  • 这就是对您收到的错误的解释。
  • 数据库是 MySQL。

标签: mysql sql date time dateadd


【解决方案1】:

你要找的是:DATE_ADD(startTime, INTERVAL 1 HOUR)

【讨论】:

  • 就是这样!非常感谢!!
【解决方案2】:

在 SQL Server 中,您可以执行以下操作:

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

不管数据库如何,我觉得奇怪的是结束时间与开始时间在不同的表中。

【讨论】:

  • 我发现我的名字不太清楚,startTime是游戏开始的时间,endTime是员工可以回家的时间(也许改成出发时间会更清楚)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多