2013-05-14 10 views
0

Сценарий:Обновление временной метки столбца путем добавления значения из другого столбца

Мы имеем таблицу:

GAME_PLAYED (ID, запуск, game_duration)

В интерфейсе Покажем идентификатор , время начала, время окончания. (Ранее время отделки была рассчитан путем добавления StartTime + длительности игры)

(начало и FINISH_TIME имеет timestmap в Postgres game_ruation имеет типа:. Целое число, и это показывает секунду)

В настоящее время в связи с изменением требований мы добавив еще один столбец: FINISH_TIME. Для старых данных, которые мы хотим обновить существующую таблицу для заполнения значений в FINISH_TIME

Таким образом, мы пытались за это.

Если я пишу staement так:

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 

запрос не работает. Может ли кто-нибудь рассказать мне, чего не хватает или что я делаю неправильно?

+0

Что такое тип данных game_duration? – Hikiko

+0

game_ruation имеет тип: integer и показывает секунды. –

+2

Что означает «не работает»? О, и кто бы ни думал об использовании зарезервированного слова «begin» в качестве столбца namd, должен быть запущен. – Bohemian

ответ

2

Попробуйте это:

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

BTW: Там нет необходимости делать вложенный запрос, если вы хотите, чтобы вычислить время окончания для строки с течением времени длительностью от одной и той же строки.

+0

спасибо, что я делаю :) Привет. –

0

Я нашел решение:

Я пытаюсь что-то вроде этого

Select start, start+ INTERVAL '1 SECONDS'* duration 
from GAME_PLAYED as FINISH_TIME 
where id = 123 
0

секунд 1/(60 * 60 * 24) в день.

Select start, start + game_duration/(60*60*24) as end 
from GAME_PLAYED as FINISH_TIME 
where id = 123 
Смежные вопросы