SQL-计算生日所属的星座
时间:2011-03-04 来源:花语倾情
SELECT @NowDate = (CAST(MONTH(@Birthday) AS VARCHAR(10)) + CAST((CASE WHEN DAY(@Birthday) < 10 THEN '0' + CAST(DAY(@Birthday) AS VARCHAR(10)) ELSE CAST(DAY(@Birthday) AS VARCHAR(10)) END) AS VARCHAR(10)));这个计算星座的方法,最麻烦的就是在前期的日期转换上,时间转好了,其它的就好办了,做数字区间的对比吧,就能得到你想要的星座了!
/* 星座 日期(公历) 英文名 水瓶座 (1/20 - 2/18) Aquarius 双鱼座 (2/19 - 3/20) Pisces 牡羊座 (3/21 - 4/20) Aries 金牛座 (4/21 - 5/20) Taurus 双子座 (5/21 - 6/21) Gemini 巨蟹座 (6/22 - 7/22) Cancer 狮子座 (7/23 - 8/22) Leo 处女座 (8/23 - 9/22) Virgo 天秤座 (9/23 - 10/22) Libra 天蝎座 (10/23 - 11/21) Scorpio 射手座 (11/22 - 12/21) Sagittarius */ DECLARE @TABLE TABLE ( name_zh VARCHAR(128), name_en VARCHAR(128), s_time INT, o_time INT ); DECLARE @NowDate INT; DECLARE @Birthday DATETIME; SET @Birthday = GETDATE(); SELECT @NowDate = (CAST(MONTH(@Birthday) AS VARCHAR(10)) + CAST((CASE WHEN DAY(@Birthday) < 10 THEN '0' + CAST(DAY(@Birthday) AS VARCHAR(10)) ELSE CAST(DAY(@Birthday) AS VARCHAR(10)) END) AS VARCHAR(10))); INSERT INTO @TABLE VALUES ('魔羯座' ,'Capricorn' ,1222 ,119), ('水瓶座' ,'Aquarius' ,120 ,218), ('双鱼座' ,'Pisces' ,219 ,320), ('牡羊座' ,'Aries' ,321 ,420), ('金牛座' ,'Taurus' ,421 ,520), ('双子座' ,'Gemini' ,521 ,621), ('巨蟹座' ,'Cancer' ,622 ,722), ('狮子座' ,'Leo' ,723 ,822), ('处女座' ,'Virgo' ,823 ,922), ('天秤座' ,'Libra' ,923 ,1022), ('天蝎座' ,'Scorpio' ,1023 ,1121), ('射手座' ,'Sagittarius' ,1122 ,1221); SELECT name_zh, name_en, s_time, o_time FROM @TABLE WHERE @NowDate BETWEEN s_time AND o_time;这个方法没有过细的去验证,可能会存在Bug或者性能上的损失,以后有时间会在进一步改写!
相关阅读 更多 +