将SQL值从000000转换为00:00:00

时间:2016-07-07 07:38:15

标签: sql sql-server

大家好我只是SQL的新手。

我有一列显示开始时间042000和结束时间050000.字段名称为starttme char(8)。我想要做的是将显示的值从042000格式化为04:20:00

这是我到目前为止所尝试过的,但它无效。

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

这就是我在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

前端

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

非常感谢任何帮助。谢谢! :)

5 个答案:

答案 0 :(得分:4)

如果要在SQL Management Studio中查看输出,可以这样做:

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

但是,格式化应该在显示值的层附近进行,例如在UI层中,如果系统有一个,在生成输出文件的层中,依此类推。

答案 1 :(得分:2)

试试这个:

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

这将输出:

04:20:00

答案 2 :(得分: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

答案 3 :(得分:0)

如果时间总是6位,你可以这样做:

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

答案 4 :(得分:0)

你可以使用,

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