2011-10-25 10 views
3

저는 Microsoft SQL Server 2000을 사용하고 있고 오전 9시 30 분, 오후 12시 30 분 대신 24 시간 대신 열 시간을 변환해야합니다. 이 칼럼을 정렬하려고하면 칼로리가 작동하지 않는다고 생각합니다. 왜냐하면 칼로리를 시간 대신 숫자로 보는 것이기 때문입니다. 내가 필요한 것은 FORMAT (시간, HH : mm : ss) 함수로 수행 할 수 있다고 생각하지만, SQL Server에서는 함수가 아닌 것처럼 보이기 때문에 지금 당황 스럽다. 24 :SQL Server에서 시간을 24 시간으로 변환

+0

캐스트 ('1:30 PM'시간)? –

+0

열의 유형이 DateTime 인 경우 정렬이 정확해야합니다. 보고있는 문자열은 기본 시간을 나타냅니다. – Ray

답변

9
+0

기존 열의 값을 변환하거나 현재 시간을 가져 오는 것입니까? – gdawgrancid

+1

@gdawgrancid : GETDATE를 자신의 가치로 변경하십시오. 값이 datetime이 아니면 datetime으로 CAST합니다. – gbn

+0

@gdawgrancid는 datetime으로 변환하여 108을 형식화하고 forst 5자를 가져옵니다. –

0

당신이 하나를 시도 할 수

select CONVERT(time, CONVERT(varchar,CONVERT(date, getdate()))+ ' 02:24 PM', 120) 

위의 쿼리가 14 돌아갑니다 만 시간 부분 밀리 초를 무시하려는 경우 00.0000000

을,

select convert(varchar(8),CONVERT(time, CONVERT(varchar,CONVERT(date, getdate()))+ ' 02:24 PM', 120)) 

위의 내용은 SQL 2008에서 테스트되었으며 정상적으로 작동합니다.

1

처음으로 뭔가를 게시합니다. 나는 M/D/YYYY h : mm : ss 오전/오후에서 Datetime으로 변환해야했습니다. 제 현지 시간은 DD-MM-YYYY이므로 datetime으로 변환하기 전에 해당 형식으로 변환해야합니다. 변환 할 필드 이름은 테이블 N_IsaacForm에서 "Valeur"입니다. 저는 여기에 SQL 2008에서했던 방법입니다

select NIF.Valeur, CASE WHEN CHARINDEX('PM',NIF.Valeur) = 0 
THEN CONVERT(datetime,substring(NIF.Valeur, P2.Pos + 1, P3.Pos - P2.Pos - 1) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P3.Pos + 1, P4.Pos - P3.Pos - 3),8) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P1.Pos + 1, P2.Pos - P1.Pos - 1),2) + ' ' 
+ RIGHT('0' + substring(NIF.Valeur, 1, P1.Pos-1),2)) 
--add 12 hours if PM 
ELSE DATEADD(hour,12,CONVERT(datetime,substring(NIF.Valeur, P2.Pos + 1, P3.Pos - P2.Pos - 1) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P3.Pos + 1, P4.Pos - P3.Pos - 3),8) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P1.Pos + 1, P2.Pos - P1.Pos - 1),2) + ' ' 
+ RIGHT('0' + substring(NIF.Valeur, 1, P1.Pos-1),2))) 
END 

FROM N_IsaacForm AS NIF (nolock)  
cross apply (select (charindex('/', NIF.Valeur))) as P1(Pos) 
cross apply (select (charindex('/', NIF.Valeur, P1.Pos+1))) as P2(Pos) 
cross apply (select (charindex(' ', NIF.Valeur, P2.Pos+1))) as P3(Pos) 
cross apply (select (charindex('M', NIF.Valeur, P3.Pos+1))) as P4(Pos) 
WHERE CHARINDEX('M',NIF.Valeur) > 0 --(I had other values in the table with proper format) 

당신은 단지 특정 지역 시간을 설정할 수있는 요소의 순서를 변경해야합니다. 11 : 31.000

  • 2015년 8월 19일 10

    결과

    1. 2015년 8월 20일 오전 1시 11분 31초 ---> 2015년 8월 20일 01

      를 얻을 : PM 37:32 ---> 2015년 8월 19일 22 : 37 : 32.000

    2. 2015년 10월 7일 오후 8시 51분 37초 ---> 2015년 10월 7일 20 : 51 : 37.000

    3. 9/8/2015 3:27:17 PM ---> 2015-09-08 15 : 27 : 17.000

    누군가 도움이되기를 바랍니다. 나는이 사이트에서 많은 도움을 얻었다!

  • 관련 문제