如果值是单个数字,则sql查询添加零

时间:2015-07-23 18:52:24

标签: 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

转换为: enter image description here

我想要做的是,如果有一个值,例如15:9:40,比如9,我想把0放在9之前,看起来像15:09:40。

任何想法如何在查询中解决?

谢谢,Laziale

1 个答案:

答案 0 :(得分:1)

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