select month('2005-5-1'),year('2005-4-1')

解决方案 »

  1.   

    楼主,执行这个语句看下
    Select Cast(33 As DateTime),Cast (366 As DateTime)你就会明白
    select month(33),year(366)
    等同于
    select month('1900-02-03 00:00:00.000'),year('1901-01-02 00:00:00.000')
      

  2.   

    你也不必转换,我告诉你计算方法。 你将提到的33及366等数字看作天数,你用的month()、year()函数就是在1900年1月1日起,这么多天后,分别是几月,或者几年。
      

  3.   

    我看到了,
    month将其自动转换为了datetime
    那么什么情况下他不转换那?也就是说它在什么情况下是显示的1和1900呢?
      

  4.   

    可是
    帮助中写的是
    month(),year()和day()的区别之一就是month()和year()对整型的诠释与day()不同
    day()是累加
    month(),year()是忽略,直接认为是1900.1.1
      

  5.   

    month(33),year(366),就是在1900年1月1日基础上加上32天和加上366天。想得到1和1900,
    month中的数字必须大于等于0,小于等于30,
    year中的数字必须大于等于0,小于等于364。select month(0),year(0)
    select month(30),year(364)
    就可以得到
    1和1900
      

  6.   

    select month(33),yeat(366)结果是
                            
    ----------- ----------- 
    2           1901因為一個月最多有31天吧
    month(33)系統默認就從1月開始的。超過當1月的天數就會加1,所以顯示的就2一年有365天但有的時候不就,系統默認的就從1900年開始。
    超過了1900的天數就會加1.所以1901
      

  7.   

    那岂不是说明中的解说根本就没有意义
    还是和day一样