关于网上流行的农历计算方法的质疑?
最近在网上看了【农历】计算方法:
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 ')