print  convert(nvarchar(20),dateadd(month,1,'2012-1-31'),120)
这个的输出是这样的:2012-02-29 00:00:00print  convert(nvarchar(20),dateadd(month,1,2012-1-31),120)
这个的输出就变成:1905-07-04 00:00:00为什么去掉日期上的引号会出现这个结果?

解决方案 »

  1.   

    因为把2012-1-31当算式了,结果是1980select 2012-1-31 rr
    -----------
    1980select dateadd(month,1,dateadd(d,1980,'1900-01-01')) dd
    -----------------------
    1905-07-04 00:00:00.000
      

  2.   

    你们先别说为什么去掉引号了,哈哈,是我拼接SQL的时候无意中没拼接上引号,但是为什么去掉引号会出现 1905-07-04 00:00:00
    这个结果  你们说奇怪不,我也想到成了减运算,那你解释下为什么减出个这样的结果:1905-07-04 00:00:00
      

  3.   

    在说你们看看DATEADD(datepart,number,date)这个函数,第三个参数要求是什么格式的,不是日期数据为什么不报错?
      

  4.   

    你这个解释我明白了,但是为什么DATEADD(datepart,number,date)这个函数第三个参数不是日期数据为什么不报错?
     
      

  5.   

    '1900-01-01'是合法的日期(date型).