2012-07-08 3 views
2

안녕하세요 DB2 테이블이 있습니다SQL float 시간과 문자열 시간에 대한 계산을 수행하는 방법은 무엇입니까?

ID  TIME1  TIME2  
1000  480.5  30:30:00 

내가 TIME1 - TIME2

ID  TIME1-TIME2 
1000  450.0 

TIME1이 수 시간이 그렇게 480.5 시간 소수점 값을 얻을합니다. TIME2는 문자열 값입니다. 30:30:00 (30 시간 00 초)

이 뺄셈을 얻는 방법?

감사합니다.

+0

... 두 _different_ 데이터 유형에 간격 데이터를 저장 끔찍하다. 사실, 이것은 사용자 정의 타입을 생성하기에 완벽한 케이스가 될 것입니다. 그러면 여러분에게 좋은 타입 안전성을 부여 할 것이고, 아마 여러분은 이것을 '보통'날짜 연산에서 사용할 수있게 될 것입니다. –

+0

이것은 내 고객 데이터베이스에서 가져온 것이므로 아무 것도 할 수 없거나 데이터베이스의 유형을 변경할 수 없기 때문에이 솔루션은 분명하지 않습니다. – Dejan

답변

2

이전에 두 필드 (문자열 및 십진 필드)를 INTERVAL 데이터 형식으로 변환 한 다음 빼기 연산을 수행했습니다. DB2에서 간격을 처리하는 방법을 설명하는 this article을 살펴보십시오. 당신은 예를 들어 이런 식으로 해결책을 마련 할 수있는 문서에서 찾을 수

사용 기능 :

SELECT ID, 
NUMTODSINTERVAL(TIME1, 'SECOND') - TO_DSINTERVAL('0 ' || TIME2) AS TIME1-TIME2 
FROM table 
+0

응답 해 주셔서 감사하지만 많은 기능이 있습니다. 사용하기에 확실하지 않으며 두 필드 모두에서 사용해야합니까? 당신은 저에게 다만보기를 쓸 수 있는가? 고마워요, 안부 – Dejan

+0

내가 게시 한 예제를 봐도 그것을 시도하지 않은 ... – aleroot

+0

노력을 주셔서 감사합니다. NUMTODSINTERVAL 함수에서 오류가 발생했습니다. 내가 얻는 문제가 아니길 바래요. TIME1 이 표현식 (dec ((timestampdiff ( 4, char (t1.actualfinish-t1.reportdate))/60.00), 10,2), TIME2는 다른 테이블 T2의 값입니다. 나는 내 것과 성공적으로 합류했다. 따라서 표현식은 NUMTODSINTERVAL ((dec ((timestampdiff ( 4, char (t1.actualfinish-t1.reportdate))/60.00), 10,2)), 'SECOND') - TO_DSINTERVAL ('0'|| T2 .TIME2) – Dejan

관련 문제