大家好我只是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>
非常感谢任何帮助。谢谢! :)
答案 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