呵呵,执行sql的时候,任何值都是以字符串的类型,在sql里面插入值都用''把值标记起来。同样你在一个varchar类型中插入一个值,也得用''把插入值标记起来。

解决方案 »

  1.   

    select 2003-12-25-(2003-12-25)/365*365-30*4     
    结果为:21上面只是粗算
    把2003-12-25=1966
    换算成天数,以1900-01-01为基数,加上1966天,大约等于1905-05-21这一天
      

  2.   

    datetime类型系统里面是共用8个字节来存储的,存储的数字类型。其中前4个字节用来存储日期1900-1-1之前/后的天数,
    其中后4个字节用来存储00:00后的毫秒数。如果是''就是1900-1-1了
    select cast('' as datetime)而 2003-12-25=1966
    所以
    select cast('' + 1966 as datetime)
    就是1900-1-1 + 1966 天 = 1905-05-21
      

  3.   

    select 2003-12-25
    /*
                
    ----------- 
    1966(所影响的行数为 1 行)
    */你要明白这个是数学运算,不是说日期'2003-12-25'='1966'