关于网上流行的农历计算方法的质疑?
最近在网上看了【农历】计算方法: 
 1、建一表,放初始化资料 
 因为农历的日期,是由天文学家推算出来的,到现在只有到2049年的,以后的有了还可以加入! 
 CREATE   TABLE   SolarData 
 ( 
             yearId   int   not   null, 
             data   char(7)   not   null, 
             dataInt   int   not   null 
 )   
 --插入数据 
 INSERT   INTO    
 SolarData   SELECT   1900, '0x04bd8 ',19416   UNION   ALL   SELECT   1901, '0x04ae0 ',19168 
 …… 
 CREATE   FUNCTION   fn_GetLunar(@solarDay   DATETIME)             
 RETURNS   varchar(10)--datetime               
 AS             
 BEGIN             
       DECLARE   @solData   int             
 …… 
 我也测试了,如果在查询分析器里执行   select   dbo.fn_GetLunar(getdate())   答案是2007-04-06,正确的(今天的阳历是2007-5-21),可如果执行select   dbo.fn_GetLunar(2007-5-21),则答案就变成了:1905-05-03,为什么? 
 还有,我执行了这样一条语句:update   日历   set   农历=dbo.fn_GetLunar(阳历)   ,系统会提示:“从   char   数据类型到   datetime   数据类型的转换导致   datetime   值越界。” 
 请高手们解答,谢谢!   
------解决方案--------------------select dbo.fn_GetLunar(2007-5-21) ->  select dbo.fn_GetLunar( '2007-05-21 ')