2016-10-04 3 views
0

나는 간단한 시간 빼기를해야하지만 하나의 스크립트에 두 개의 쿼리를 구현하는 데 도움이 필요합니다.수식 문을 수학 연산에 통합하는 방법은 무엇입니까?

DB에 대한 내부 제한으로 인해 postgresql의 메소드를 사용하여 timestamp 열을 너무 많이 변환 할 수 없습니다. 대신 "추출"을 사용하여 시간, 분, 초를 꺼내서 한 열로 다시 결합했습니다.

내 질문은 내가 추출 문을 바로 아래의 두 번째 셀에서 시간을 뺀 수학 함수를 결합 할 및 단어 "분"또는 "초"에서 시간을 뺍니다 추가합니다 분 또는 초, 이것이 가능하지 않다면 걱정하지 마십시오.. . 예 :

table A 
    time   new_time(logic) 
0 4:50:55  time(1) - time(0) = 1sec 
1 $:50:56  time(2) - time(1) 

추출 문 :

select (extract(hour from timestamp) || ':' || extract(minute from timestamp) || ':' || extract(second from timestamp)) as my_time 
from tableA 

수학 문 :

update page 
set time= timestamp 
from (
    select tableA.timestamp - lead(tableA.timestamp) over (order by time) 
    from tableA 
    ) 
where tableA.id = tableB.id 

은 사전에 감사합니다.

+1

당신이? 시간에 타임 스탬프를 캐스팅 수'() : 지금 time' 귀하의 라인이 작동 –

+0

을 선택하지만 시간 전체 날짜/타임 스탬프 열을 캐스팅 할 때 작동하지 않습니다. – RustyShackleford

+0

전체 날짜/시간 소인 column_은 무엇을 의미합니까? –

답변

1
update page 
set time = timestamp 
from (
    select id, 
     lead(timestamp::time) - timestamp::time over (order by timestamp::time) 
    from tableA 
) tableA 
where tableA.id = page.id 
+0

어떤 이유로 시간 기록을 출력 할 수없고 내가 위에 게시 한 오류. SQL 오류 [500310] [0A000] : [Amazon] (500310) 잘못된 작업 : 지정된 형식 또는 함수 (INFO 메시지 당 하나)가 Redshift 테이블에서 지원되지 않습니다. 나는 파기를했는데 타임 스탬프를 보유하고있는 열은 "타임 스탬프가없는 타임 스탬프"라고 표시되어 왜 캐스팅이나 시간 변환이 불가능할 수 있다고 생각합니까? 감사 – RustyShackleford

+0

을 돕는 나는이 줄을 사용하여 테이블에 대한 세부 사항을 발견 선택 *이 코드는 문제를 해결하는 데 도움이 될 수 있지만 TABLENAME = 'TABLEA' – RustyShackleford

+0

, 그것은 _why_ 설명 및/또는 그것을 _how_하지 않습니다 pg_table_def에서 질문에 답합니다. 이러한 추가적인 맥락을 제공하면 장기적인 교육적 가치가 크게 향상 될 것입니다. 어떤 제한 사항 및 가정이 적용되는지를 포함하여 설명을 추가하기 위해 답을 [편집하십시오]. –

관련 문제