2011-12-13 2 views
1

날짜 시간 필드로 구성된 테이블 프로 시저가 있습니다.테이블 SQL과 다른 시간

Proccesses (int로서 아이디 날짜 시간 등, RunDate) 나는 초

내가 검색하기 위해 출력

Output 
12:01 
12:03 

에서받을 필요

For Example 

ID  RunDate 
1   2011-12-13 12:36:26.483 
2   2011-12-12 12:37:22.421 
3   2011-12-11 12:36:44.421 

없이 시간으로 RunDate에 의해 고유 실행해야 SQL을 사용하여 그것을 작동시키고있다.

SELECT DISTINCT DATENAME(hour, RunDateTime) + ':' + 
DATENAME(mi, RunDateTime) AS d 
from Proccesses 

p 8, 나는 (12)를받을 필요 : 나는 12를받을 분 예를 8 미만 10 내가 한 자리 "8"을받는 것을 roblem, 나는 예를 들어 두 자리 08

을 수신 할 : 08

답변

1

은 ... 또는 당신이 CONVERT를 사용하고 그에 따라 문자열 결과를 처리

SELECT DISTINCT 
RIGHT ('00' + CAST(DATENAME(hour, RunDateTime) AS VARCHAR(2)), 2) + ':' + 
RIGHT ('00' + CAST(DATENAME(mi, RunDateTime) AS VARCHAR(2)), 2) 
from Proccesses 

을 시도

수정 : CONVERT 옵션을 사용하면 결국 upvote the answer from Joe Stefanelli이됩니다.

+0

CONVERT를 제안하는 답변을 수정하는 것이 좋습니다. 내가 그걸 생각 했길 바래. 오, 잠깐, [나는] (http://stackoverflow.com/a/8495969/341251). ;-) –

+1

예 - 당신은 ... 나는 그냥 인터넷 검색을하고 나서 내 대답에 붙여 넣었습니다 ... 당신이 CONVERT로 작업 샘플을 제공 한 이후로 내 붙여 넣기가 당신만큼 철저하지는 않았지만 제가하지 않았습니다. 그리고 지금 나는 또 다른 편집을 추가했다 :-) – Yahia

0

CONVERT 스타일 108은 hh : mm : ss를 반환합니다. 데이터 유형으로 CHAR (5)를 사용하면 hh : mm 부분 만 반환됩니다.

SELECT DISTINCT CONVERT(CHAR(5), RunDateTime, 108) AS d 
    FROM Processes 
0
SELECT RIGHT(CONVERT(VARCHAR,RunDateTime),7) 

당신은 당신이 원하는 경우 AM/PM으로 제거 할 수있다.