在SQL查询中将nonth从8更改为08

在SQL查询中将nonth从8更改为08,sql,sql-server,Sql,Sql Server,我正在尝试从数据库中的日期获取月份和年份 我使用以下查询来获取日期。但是格式不符合我的要求。因此,我的查询没有给出我期望的结果 select top 3 datepart(yyyy, cia.DateCreated) as YYyy, datepart(mm, cia.DateCreated) as mm, case when (datepart(mm, cia.DateCreated) < 10) then cast(concat('0',datep

我正在尝试从数据库中的日期获取月份和年份

我使用以下查询来获取日期。但是格式不符合我的要求。因此,我的查询没有给出我期望的结果

select top 3 datepart(yyyy, cia.DateCreated) as YYyy, datepart(mm, cia.DateCreated) as mm,

    case when (datepart(mm, cia.DateCreated) < 10) then      
        cast(concat('0',datepart(mm, cia.DateCreated)) as varchar) 
    else 
        datepart(mm, cia.DateCreated)
    end as Months

   from v_AuthListInfo cia
我得到的月份值是1,2,3,4,5,6,7,8,但我需要像01,02,03,04这样的值

我尝试使用DatePart、Cast和Concatatite函数,但仍然得到了像1、2、3、4这样的数据。

使用正确的函数

使用权函数


以下是使用ceratin字符填充的一般方法:

right(@padding + cast(@stringToPad as varchar), 2)
其中@padding由要使用的字符组成,其长度必须是所需的长度,因此在您的情况下,它将是00

@stringToPad是要扩展的字符串,在您的示例中,castmonthcia.date创建为varchar

最后,举个例子,它看起来像:

select right('00' + cast(1 as varchar), 2)

以下是使用ceratin字符填充的一般方法:

right(@padding + cast(@stringToPad as varchar), 2)
其中@padding由要使用的字符组成,其长度必须是所需的长度,因此在您的情况下,它将是00

@stringToPad是要扩展的字符串,在您的示例中,castmonthcia.date创建为varchar

最后,举个例子,它看起来像:

select right('00' + cast(1 as varchar), 2)

您可以使用内置函数格式:

如果你想使用正确的方法,我建议:

right(concat('00', month(cia.DateCreated)), 2)

您可以使用内置函数格式:

如果你想使用正确的方法,我建议:

right(concat('00', month(cia.DateCreated)), 2)

您通常会在前端进行这种格式化,而不是在数据库中。@DaleK我需要在其他查询中使用它。或者可能是SSRS报告。SSRS报告是进行此类格式化的完美场所。SSRS是一个前端。您的方法不起作用的原因是您的案例表达式分支中有不同的数据类型。如果您将所有的dateparts设置为varchar大小写,它将按预期工作。您通常会在前端执行这种格式设置,而不是数据库。@DaleK我需要在其他查询中使用它。或者可能是SSRS报告。SSRS报告是进行此类格式化的完美场所。SSRS是一个前端。您的方法不起作用的原因是您的案例表达式分支中有不同的数据类型。如果您将所有dateparts装箱到varchar,它将按预期工作。