SQL 시간 정수 값 (0, 1, 2, ..., 23)의 1 열로 된 데이터 집합이 있습니다. 다음과 같이 변환 할 수있는 방법이 있습니까? 12:00 am, 1:00 am, 2:00 am, ..., 11:00 pm ??정수 (0,1,2 ..., 23)을시 (AM/PM)로 변환
답변
이 표현은 작동합니다 : 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]
는 항상 "어려운 방법"이 될 것.
SELECT CAST(num AS VARCHAR) + ':00' +
CASE WHEN NUM < 12 THEN 'AM' ELSE 'PM' END Time
이 SQLFiddle에 live demo를 참조하십시오 여기 (수 num
라고에 열을 가정) 하나 개의 옵션입니다.
정말, 정말로, 클라이언트에서이 서식을 지정해야합니다. 이것은 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
완전히 동의했습니다. 그냥 빠른 솔루션이 필요합니다 :) – Ray
아마 (아마 너무 복잡) :
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
당신은 정수로 :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
, 당신은 불필요한 변환없이 같은 일을 TIMEFROMPARTS
기능을 사용할 수있을 것
이것은 여전히 그들이 뭘하고있어 꽤되지 않습니다; 출력은 다음과 같습니다. '13 : 00 : 00.0000000'. –
@AaronBertrand 이것은 OP에 "time"유형의 값을 제공하며, 필요에 따라 합리적인 표현으로 변환 할 수 있습니다. – dasblinkenlight
- 1. [정수] -> 정수 변환
- 2. 정수 변환
- 3. 정수 유형 간 변환
- 4. 정수 배열을 숫자로 변환
- 5. 정수 집합을 범위로 변환
- 6. 정수 배열의 기본 변환
- 7. 정수 식별자를 포인터로 변환
- 8. 일치하지 않는 정수 변환
- 9. 문자열과 정수 변환
- 10. 특수 정수 변환
- 11. 문자열을 정수 목록으로 변환
- 12. 정수 목록을 문자열로 변환
- 13. 부호없는 정수 변환 VHDL
- 14. 이진 변환 정수
- 15. 분 (정수) 변환 2008
- 16. 정수 목록을 청크로 변환
- 17. 정수 배열을 문자열로 변환
- 18. 정수 값을 문자열로 변환
- 19. 변환 유형 정수 오해
- 20. 정수 변환 순위와 정수 홍보 및 정수 변환 순위에 대한 독서 진흥
- 21. C++에서 안전한 정수 변환
- 22. msgbox의 정수 표시 변환 오류
- 23. 정수 배열을 바이트 배열로 변환
- 24. jsp에서 double로 정수 (long) 변환
- 25. 영숫자 문자열을 정수 형식으로 변환
- 26. 문자열을 정수 배열로 변환 하시겠습니까?
- 27. PHP로 변환 (정수) 문자열로 반환
- 28. 정수 목록을 목록 집합으로 변환
- 29. 정수 벡터를 2D 배열로 변환
- 30. 문자열을 정수 ascii 값으로 변환
SQL Server 2008에는 CONCAT이 없습니다. –
@aaron SQL Server를 사용한 적은 한번도 없었습니다. – Bohemian
아니요, 잘못된 연산이 발생합니다 (정수와 문자열을 추가 할 수 없음). 게시하기 전에 http://sqlfiddle.com/에서 솔루션을 사용해보십시오 ... –