2013-11-22 3 views

답변

1

이 표현은 작동합니다 : SQL와

CASE WHEN [Hour] = 0 THEN '12:00am' 
    WHEN [Hour] < 12 THEN CAST([Hour] AS VarChar) + ':00am' 
    WHEN [Hour] = 12 THEN '12:00pm' 
    ELSE CAST(([Hour]-12) AS VarChar) + ':00pm' 
END AS [Time] 
0

는 항상 "어려운 방법"이 될 것.

SELECT CAST(num AS VARCHAR) + ':00' + 
    CASE WHEN NUM < 12 THEN 'AM' ELSE 'PM' END Time 

이 SQLFiddle에 live demo를 참조하십시오 여기 (수 num라고에 열을 가정) 하나 개의 옵션입니다.

+3

SQL Server 2008에는 CONCAT이 없습니다. –

+0

@aaron SQL Server를 사용한 적은 한번도 없었습니다. – Bohemian

+0

아니요, 잘못된 연산이 발생합니다 (정수와 문자열을 추가 할 수 없음). 게시하기 전에 http://sqlfiddle.com/에서 솔루션을 사용해보십시오 ... –

0

정말, 정말로, 클라이언트에서이 서식을 지정해야합니다. 이것은 SQL Server에 대한 정리 작업이 아니며 T-SQL에서 수행하는 목적을 이해하지 못합니다.

DECLARE @t TABLE(i INT); 

INSERT @t(i) VALUES(0),(1),(2), ... ,(23); 

SELECT LOWER(RIGHT(CONVERT(CHAR(19),DATEADD(HOUR,i,0),0),7)) FROM @t ORDER BY i; 

결과 :

12:00am 
1:00am 
2:00am 
... 
11:00pm 
+0

완전히 동의했습니다. 그냥 빠른 솔루션이 필요합니다 :) – Ray

0

아마 (아마 너무 복잡) :

SELECT Hour, 
     CASE WHEN Hour = 0 THEN '12:00AM' 
     ELSE CASE WHEN Hour = 12 THEN '12:00PM' 
     ELSE CASE WHEN Hour < 12 
      THEN CAST(Hour AS VARCHAR(7)) + ':00AM' 
      ELSE CAST(Hour - 12 AS VARCHAR(7)) + ':00PM' 
     END END END AS AM_PM 
FROM dbo.Time 

Demo

2

당신은 정수로 :00:00를 추가하고, 금연실하는 CAST을 사용할 수 있습니다 이 같은 time에 실온 :

SELECT TIMEFROMPARTS(int_val, 0, 0, 0, 0) 
FROM my_table 
: 당신은 SQL 서버 2012로 업그레이드 할 때

SELECT CAST(CAST(int_val as VARCHAR(2))+':00:00' as time) 
FROM my_table 

Demo on sqlfiddle.

, 당신은 불필요한 변환없이 같은 일을 TIMEFROMPARTS 기능을 사용할 수있을 것

+0

이것은 여전히 ​​그들이 뭘하고있어 꽤되지 않습니다; 출력은 다음과 같습니다. '13 : 00 : 00.0000000'. –

+0

@AaronBertrand 이것은 OP에 "time"유형의 값을 제공하며, 필요에 따라 합리적인 표현으로 변환 할 수 있습니다. – dasblinkenlight