2016-07-07 2 views
2

안녕하세요. 전 SQL에서 초보자입니다.SQL 값을 000000에서 00:00:00으로 변환합니다.

시작 시간 042000과 종료 시간 050000을 표시하는 열이 있습니다. 필드 이름은 starttme char (8)입니다. 내가 원하는 것은 표시된 값을 042000에서 04:20:00으로 지정하는 것입니다.

이것은 지금까지 시도했지만 작동하지 않습니다.

select convert(char(8), starttme,101) as Start Time 
from sampletable 

는 그리고 이것은 내가있는 gridview

어떤 도움이 많이 주시면 감사하겠습니다

<asp:GridView ID="GridView1" class = "grd" runat="server"></asp:GridView> 

VB

Protected Sub loadgrid() 
    For Each dt As System.Data.DataTable In prod2() 
     Dim i As Integer = i + 1 
     Dim dv As New System.Data.DataView(dt) 
     Dim dt2 As System.Data.DataTable = dv.ToTable(False, {"Start Time", "End Time"}) 

     Select Case i 
      Case 1 

       GridView1.DataSource = dt2 
       GridView1.DataBind() 

      Case 2 -- codes here -- 
      Case 3 -- codes here -- 


     End Select 
    Next 



End Sub 

프런트 엔드에 표시하는 방법입니다. 고맙습니다! 당신은 SQL Management Studio의 출력을보고 싶다면 :

+2

형식,하지를 . – DavidG

+2

날짜/시간을 varchar 열에 저장하지 마십시오. 적절한 데이터 유형을 사용하십시오! – jarlh

+1

@DavidG 잘못되었습니다. 시간 값인 경우 시간 값으로 저장하십시오. – Pred

답변

4

, 당신은 이런 식으로 작업을 수행 할 수 있습니다

SELECT STUFF(STUFF(col, 4, 0, ':'), 2, 0, ':') 
FROM ... 

을하지만,에서 예를 들어, 당신이 값을 표시 레이어에 가깝게 수행해야합니다 서식 시스템에 UI 레이어가있는 경우 UI 레이어, 출력 파일을 생성하는 레이어 등등.

0

시간 요소가없는 날짜 스타일 인 101을 사용하고 있습니다.

원하는 것을 사용하려면 114를 사용해야합니다. 예를 들어

Select convert(char(8),starttme,114) as [Start Time] from sampletable 

, 이것은 현재의 시간을 제공 :

select convert(char(8),getdate(),114) as [Current Time] 

다른 형식 스타일은 여기에서 볼 수있다 : https://msdn.microsoft.com/en-GB/library/ms187928.aspx

2

이 시도 :

SELECT STUFF(STUFF('042000', 3, 0, ':'), 6, 0, ':') 

이 출력이됩니다 시간이 항상 6 자리의 경우

04:20:00 
0

당신은 이런 식으로 작업을 수행 할 수 있습니다 데이터베이스에

select SUBSTRING (starttme, 1, 2) + ':' + SUBSTRING (starttme, 3, 2) + ':' + SUBSTRING (starttme, 5, 2) 
사용할 수
+0

4 자리 만 표시하려면 어떻게해야합니까? 마지막 두 자리는 어떻게 제거합니까? AM/PM을 추가 할 수 있습니까? 감사. –

+0

원하는대로 할 수 있습니다! select SUBSTRING (starttme, 1, 2)이 코드의 의미는 다음과 같습니다. starttme을 가져 와서 문자 1과 2를 입력하십시오 (starttme가 123456이면 12를 돌려줍니다). 결국에는 추가 할 수 있습니다. '또는'PM ' –

0

, UI에

select STUFF(STUFF('042000', 3, 0, ':'), 6, 0, ':') as [Start Time] 
from sampletable 
+0

[JaydipJ의 답변] (http://stackoverflow.com/a/38240091/2451726)과 동일합니다. – Arulkumar

관련 문제