select datepart(MM,getdate())
如:getdate()=2008-08-16 09:23:47.880
得到结果为08,而不是8,如何可以做到呢,求助

解决方案 »

  1.   


    select datepart(MM,'2008-08-16 09:23:47.880') 
    --结果明明是8啊``
      

  2.   

    select datename(MM,'2008-08-16 09:23:47.880') 
    这样才是08datepart会将结果转换成整型,所以会自动去掉前面的0,而datename不会。
      

  3.   

    --TRY
    select month('2008-08-16 09:23:47.880 ') 
      

  4.   

    取日期部分函数返回值是数值类型,所以如果月份小于10的话,只返回1位数字,如果想得到无论哪个月份都是2位的形式,可以考虑用类型转换,方法如下
    select right('0' + cast(datepart(MM,getdate()) as varchar),2)
    这样出来的结果是字符类型的,在使用的时候要注意点.
      

  5.   

    --'08'只能当成字符型数据,不能做为整型数据,可以试试下面的
    SELECT SUBSTRING(CONVERT(NCHAR(10),GETDATE(),120),6,2)--datepart 取出来的是整型数据,但是不符合你的要求。
    --datename 在不同语言的SQL上出来的结果是不一样的,除非你自己设定语言,例如在繁体上出来的是'八月'。