SQL查询如果值为一位数,则添加零
我有一个问题的这一部分:SQL查询如果值为一位数,则添加零,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有一个问题的这一部分: CONVERT(VARCHAR, DATEDIFF(dd, t.startdate,SYSDATETIME())) + '':'' + CONVERT(VARCHAR, DATEDIFF(hh, t.startdate,SYSDATETIME()) % 24) + '':'' + CONVERT(VARCHAR, DATEDIFF(mi, t.startdate,SYSDATETIME()) % 60) as Days 也就是说: 我想做
CONVERT(VARCHAR, DATEDIFF(dd, t.startdate,SYSDATETIME())) + '':'' +
CONVERT(VARCHAR, DATEDIFF(hh, t.startdate,SYSDATETIME()) % 24) + '':'' +
CONVERT(VARCHAR, DATEDIFF(mi, t.startdate,SYSDATETIME()) % 60) as Days
也就是说:
我想做的是,如果有一个值,比如15:9:40,比如9,我想把0放在9前面,看起来像15:09:40
你知道如何在查询中解决这个问题吗 T-SQL中有一个内置函数,名为
REPLICATE
。您可以这样使用它:
REPLICATE('0', 2 - [length of your expression])
在您的情况下,以下各项应起作用:
REPLICATE('0', 2 - LEN(CONVERT(VARCHAR, DATEDIFF(dd, t.startdate,SYSDATETIME())))) +
CONVERT(VARCHAR, DATEDIFF(dd, t.startdate,SYSDATETIME())) + '':'' +
REPLICATE('0', 2 - LEN(CONVERT(VARCHAR, DATEDIFF(hh, t.startdate,SYSDATETIME()) % 24))) +
CONVERT(VARCHAR, DATEDIFF(hh, t.startdate,SYSDATETIME()) % 24) + '':'' +
REPLICATE('0', 2 - LEN(DATEDIFF(mi, t.startdate,SYSDATETIME()) % 60)) +
CONVERT(VARCHAR, DATEDIFF(mi, t.startdate,SYSDATETIME()) % 60) as Days
如果该值小于10,请在其前面添加“0”。请在我的查询中应用该函数,我不确定如何/在何处放置该函数。谢谢Kapol@Laziale我编辑了我的答案。我希望我的括号是对的。@Laziale现在看一看。