Sql 通过从其他列添加值来更新时间戳列
情景: 我们有一张桌子: 已玩游戏(id、开始、游戏持续时间) 在UI中,我们显示id、开始时间和完成时间。(早期完成时间通过添加starttime+游戏持续时间计算)Sql 通过从其他列添加值来更新时间戳列,sql,postgresql,Sql,Postgresql,情景: 我们有一张桌子: 已玩游戏(id、开始、游戏持续时间) 在UI中,我们显示id、开始时间和完成时间。(早期完成时间通过添加starttime+游戏持续时间计算) (开始和结束时间是postgres中的timestmap。游戏类型为:integer,显示秒数) 现在由于需求的变化,我们正在添加另一列:FINISH_TIME。 对于较旧的数据,我们希望更新现有表以在完成时间填充值 所以我们一直在努力 如果我这样写: Select start, start+ INTERVAL 60 SECO
(开始和结束时间是postgres中的timestmap。游戏类型为:integer,显示秒数) 现在由于需求的变化,我们正在添加另一列:FINISH_TIME。 对于较旧的数据,我们希望更新现有表以在完成时间填充值 所以我们一直在努力 如果我这样写:
Select start, start+ INTERVAL 60 SECONDS as end
from GAME_PLAYED as FINISH_TIME
where id = 123
这很有效
如果我写
Select start, start + INTERVAL (
SELECT game_duration
from GAME_PLAYED
where id = 123) AS FINISH_TIME
from GAME_PLAYED
where id = 123
查询不起作用。
谁能告诉我遗漏了什么或我做错了什么吗?试试这个:
SELECT
start,
start + game_duration * INTERVAL '1 SECONDS' AS finish_time
FROM "GAME_PLAYED" WHERE id = 123;
顺便说一句:如果要计算同一行中具有持续时间的行的完成时间,则无需执行子查询。我找到了解决方案:
我正在尝试这样的东西
Select start, start+ INTERVAL '1 SECONDS'* duration
from GAME_PLAYED as FINISH_TIME
where id = 123
秒是一天的1/(60*60*24)
Select start, start + game_duration / (60*60*24) as end
from GAME_PLAYED as FINISH_TIME
where id = 123
游戏持续时间的数据类型是什么?游戏持续时间的类型是:整数,它显示秒数。“不工作”的确切含义是什么?哦,任何想使用保留字“begin”作为列namd的人都应该被解雇。所以这可能就是问题所在。根据timestamp+integer没有定义的行为,您正在尝试将integer转换为interval,这可能在框中不受支持…如何
选择start,(start+interval(游戏持续时间))作为id=123的游戏的结束时间?