2016-09-26 5 views
-1

데이터베이스에 두 개의 열 (START_TIME 및 다른 END_TIME)이있는 테이블이 있습니다. 열의 유형은 VARCHAR2입니다.SQL SQL VARCHAR 열 유형 간의 시차를 선택하십시오.

이 두 열 사이의 시간차를 선택하고 싶습니다.

이 열이 어떤 종류의 데이터를 포함하고 있는지 알고 싶습니다. 아래 열의 데이터를 선택했습니다.

이것은 SELECT DISTINCT start_time FROM table_name의 결과입니다

15:20 
22.30 
16:00 
24:00 
07:00 
06:55 
6:45 
23:50 
6.5 
15.20 
19:00 
0:00 
1600 
16 
19 
15:00 
6:50 
7 
15:30 
23.50 
24 
14.75 
23 
15:45 
00:15 

이이 SELECT DISTINCT end_time FROM table_name의 결과입니다

07:00 
16:00 
24:00 
6:45 
15:35 
07 
00 
16 
08:00 
07:20 
7.25 
15:00 
0700 
7 
15:30 
15 
06:45 
07.00 
24 
15.30 
7:00 
23 
15:45 
00:15 
는 는 무엇을 할 수

? 이 다양한 형식으로 시간을 포함처럼

+1

start_time과 end_time을 일치시키기에 충분한 정보가 없습니다. 같은 테이블의 두 열이 모두 같습니까 (그 것처럼 보이지만 확실해야합니까?). – Linkan

+1

Yuk. 테이블에 쓰고있는 것을 수정해야합니다. 값을 재구성하여 시간으로 분석 할 수 있어야하며, 단일 숫자를 어떻게 해석해야할까요? '7'과 '6.5'는 무엇입니까? –

+0

두 컬럼의 샘플 테이블 데이터를 동시에 보여주십시오. 또한 예상 결과를 사용하십시오. – jarlh

답변

-1
select to_date(start_time,'hh24:mi')-to_date(end_time,'hh24:mi') FROM table_name; 
+0

이것은 날짜가 hh24 형식 인 경우에만 작동 할 수 있습니다. mi – Aleksej

+0

이 링크는 질문에 대답 할 수 있지만, 여기에 답변의 핵심 부분을 포함하고 참조 용 링크를 제공하십시오. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/13797624) –

+2

@ H.Pauwelyn ツ :이 답변의 문제는 링크 전용 답변 인 것과 다릅니다. – Aleksej

1

당신에게 데이터 보인다. "14.75"는 소수점이 십진 시간임을 나타냅니다.

10 진수로 변환하는 것이 좋습니다. 그래서,이 같은 :

select (case when col like '%:%' 
      then cast(regexp_substr(col, '[^:]', 1, 1) as decimal(10, 2)) + cast(right(col, 2) as decimal(10, 2))/100 
      else cast(col as decimal(10, 2)) 
     end) 

당신은 모두를 변환하여 차이를 고려하여 시차를 얻을 수 있습니다 - 당신은 소수 시간을 얻을 것이다.

+0

나는이 시도 : 다음 (START_TIME에서 시간) + 추출물 START_TIME에서 (분)/60.0 다른 캐스트 (십진수로 START_TIME (10, 2)) 끝을 추출 : '% %' 이'때 START_TIME (같은 경우를 선택 나는이 오류가 pmcaldt' 에서 CR로) : 'ORA-30076를 : 추출물 유효 추출물 필드 source' 나는 그것을 잘못하고 있는가? –

+0

@FarzadSoltani. . . 나는 어떻게 든 혼란스러워했다. 열은 문자열이므로 날짜/시간 함수가 아닌 문자열 함수가 필요합니다. –