0

设想 :

我们有一张桌子:

GAME_PLAYED (id , start, game_duration )

在 UI 中我们显示 id、starttime、Finish time。(较早的完成时间是通过添加开始时间+游戏持续时间来计算的)

(start 和 FINISH_TIME 是 postgres 中的时间图。game_ruation 的类型是:整数,它显示秒数)

现在由于需求变化,我们添加了另一列:FINISH_TIME。 对于较旧的数据,我们要更新现有表以填充 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

查询不起作用。 谁能告诉我缺少什么或我做错了什么?

4

3 回答 3

2

尝试这个:

 SELECT
     start, 
     start + game_duration * INTERVAL '1 SECONDS' AS finish_time 
 FROM "GAME_PLAYED" WHERE id = 123;

顺便说一句:如果要计算具有同一行持续时间的行的完成时间,则无需执行子查询。

于 2013-05-14T07:57:35.840 回答
0

我找到了解决方案:

我正在尝试这样的事情

Select start,  start+ INTERVAL '1 SECONDS'* duration 
from GAME_PLAYED as FINISH_TIME  
where id = 123
于 2013-05-14T07:58:35.733 回答
0

秒是一天的 1/(60*60*24)。

Select start,  start +  game_duration / (60*60*24) as end 
from GAME_PLAYED as FINISH_TIME  
where id = 123
于 2013-05-14T09:35:21.920 回答