Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询如果值为一位数,则添加零_Sql_Sql Server 2008_Tsql - Fatal编程技术网

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现在看一看。