新聞中心
中午正好吃完飯,休息,看到QQ群里面發(fā)了一個(gè)問題,說給你一個(gè)沒有年份的日期,算出這個(gè)日期所屬的星座;起初剛開始的第一個(gè)想法就是取星座的開始和起始時(shí)間來做區(qū)間的比對,得到所在區(qū)間,就知道星座了!但后來想想,除了時(shí)間區(qū)間的比對,有沒有其它的方法?

創(chuàng)新互聯(lián)公司:公司2013年成立為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為上千家公司企業(yè)提供了專業(yè)的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需定制設(shè)計(jì)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
想來想去,試著用數(shù)字做比較看看(最后寫完才覺得這個(gè)本質(zhì)上和日期做比對沒有什么區(qū)別);因?yàn)樾亲臅r(shí)間區(qū)間段是固定的,不會有重復(fù)的,那么我可以把時(shí)間轉(zhuǎn)換成數(shù)字,例如水瓶座是1/20到2/18,那我可以轉(zhuǎn)換成120到218,但隨之而來的就有一個(gè)問題了,例如今天這個(gè)日期,3月4號,由于轉(zhuǎn)換成數(shù)字后會變成34(應(yīng)該是304),中間少了個(gè)0,怎么都找不到區(qū)間,總是計(jì)算不對,最后只能改變一下將時(shí)間轉(zhuǎn)換為數(shù)字的方法了!
- SELECT @NowDate = (CAST(MONTH(@Birthday) AS VARCHAR(10)) + CAST((CASE WHEN DAY(@Bir
- thday) < 10 THEN '0' + CAST(DAY(@Birthday) AS VARCHAR(10)) ELSE CAST(DAY(@Birthday)
- AS VARCHAR(10)) END) AS VARCHAR(10)));
這個(gè)計(jì)算星座的方法,最麻煩的就是在前期的日期轉(zhuǎn)換上,時(shí)間轉(zhuǎn)好了,其它的就好辦了,做數(shù)字區(qū)間的對比吧,就能得到你想要的星座了!
- /*
- 星座 日期(公歷) 英文名
- 魔羯座 (12/22 - 01/19) Capricorn
- 水瓶座 (01/20 - 02/18) Aquarius
- 雙魚座 (02/19 - 03/20) Pisces
- 牡羊座 (03/21 - 04/20) Aries
- 金牛座 (04/21 - 05/20) Taurus
- 雙子座 (05/21 - 06/21) Gemini
- 巨蟹座 (06/22 - 07/22) Cancer
- 獅子座 (07/23 - 08/22) Leo
- 處女座 (08/23 - 09/22) Virgo
- 天秤座 (09/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;
這個(gè)方法沒有過細(xì)的去驗(yàn)證,可能會存在Bug或者性能上的損失,以后有時(shí)間會在進(jìn)一步改寫!
【編輯推薦】
- 如何讓微軟認(rèn)識閏年的2月29日
- 查詢表結(jié)構(gòu)的SQL語句
- 使用SQL語句查詢時(shí)間段
- 巧用SQL語句刪除重復(fù)記錄
- 判斷字段是否存在的SQL語句寫法
網(wǎng)站欄目:利用SQL計(jì)算生日所屬的星座
文章鏈接:http://www.dlmjj.cn/article/dpcoggh.html


咨詢
建站咨詢
