2016-07-07 28 views
2

Hallo allerseits Ich bin nur ein Neuling in SQL.Convert SQL-Wert von 000000 zu 00:00:00

Ich habe eine Spalte, die Startzeit 042000 und Endzeit 050000 angezeigt. Der Feldname ist starttme Char (8). Was ich tun möchte, ist den angezeigten Wert von zu 04:20:00 zu formatieren.

Dies ist, was ich bisher versucht habe, und es funktioniert nicht.

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

Und das ist, wie ich es in gridview anzeigen würde

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 

FrontEnd

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

Jede Hilfe sehr geschätzt werden. Vielen Dank! :)

+2

Format in der Benutzeroberfläche nicht in der Datenbank . – DavidG

+2

Datum/Uhrzeit nicht in Varchar-Spalten speichern, geeignete Datentypen verwenden! – jarlh

+1

@DavidG falsch, wenn es ein Zeitwert sein soll, speichern Sie es als Zeitwert. – Pred

Antwort

4

Wenn Sie die Ausgabe in SQL Management Studio, um sehen möchten, können Sie es wie folgt tun:

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

jedoch die Formatierung sollte näher an die Schicht durchgeführt werden, in dem Sie den Wert anzuzeigen, zB in die UI-Ebene, wenn Ihr System eine hat, in der Ebene, die die Ausgabedatei erzeugt, und so weiter.

2

Try this:

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

dieses

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

Andere Formatierungen können Sie hier sehen ausgegeben:

04:20:00 
0

wenn die Zeit immer 6-stellig ist, können Sie es wie folgt tun:

select SUBSTRING (starttme, 1, 2) + ':' + SUBSTRING (starttme, 3, 2) + ':' + SUBSTRING (starttme, 5, 2) 
+0

Was ist, wenn ich möchte, dass es nur 4 Ziffern anzeigt? Wie entferne ich die letzten zwei Ziffern? Und ist es möglich, AM/PM hinzuzufügen? Vielen Dank. –

+0

Sie können machen, was Sie wollen! wählen Sie SUBSTRING (starttme, 1, 2) Dieser Code bedeutet: Nehmen Sie starttme und geben Sie mir von Zeichen 1 und 2 (wenn starttme ist 123456 dann gibt Ihnen zurück 12) Am Ende können Sie einfach hinzufügen .... + 'AM 'oder' PM ' –

0

Sie,

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

Dies ist dasselbe wie [JaydipJs Antwort] (http://stackoverflow.com/a/38240091/2451726) – Arulkumar