SqlServer 中怎么實(shí)現(xiàn)按時(shí)間段查詢,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括廣信網(wǎng)站建設(shè)、廣信網(wǎng)站制作、廣信網(wǎng)頁制作以及廣信網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,廣信網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到廣信省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
在寫按時(shí)間段查詢的sql語句的時(shí)候 一般我們會這么寫查詢條件:
where date>='2010-01-01' and date<='2010-10-1'
但是在實(shí)執(zhí)行Sql時(shí)些語句會轉(zhuǎn)換成這樣:
where date>='2010-01-01 0:00:00' and date<='2010-10-1:0:00:00'
,再看這個(gè)條件的話,也許就會有些明白,
那就是'2010-10-1 0:00:00' 之后的數(shù)據(jù)例如('2010-10-1:08:25:00')查不到,也就是說2010-10-1的數(shù)據(jù)查不到。
知道原因了可以修改查詢條件為:
where date>='2010-01-01' and date<='2010-10-1 23:59:59' 或 where date>='2010-01-01' and date<='2010-10-2'
某個(gè)表某個(gè)字段是Datetime型 以"YYYY-MM-DD 00:00:00" 存放
(1)、例如數(shù)據(jù)
2009-01-22 21:22:222009-01-22 19:21:112009-01-22 23:10:22
(2)、用 select * from TABLE where date between '2009-1-22' And '2009-1-22'
,想查日期為2009-1-22的記錄,結(jié)果查不到
(3)、問題原因
短日期類型默認(rèn)Time為00:00:00,所以當(dāng)使用between作限制條件時(shí),就相當(dāng)于between '2009-1-22 00:00:00' and '2009-1-22 00:00:00',因此就查不出數(shù)據(jù)。
(4)、解決方法
--方案一:對數(shù)據(jù)庫里面的字段進(jìn)行日期格式轉(zhuǎn)換 select * from tb where convert(varchar(10),riqi,120) = '2009-01-22' --方案二:給日期補(bǔ)全時(shí)分秒 select * from tb where riqi between '2009-01-22 00:00:00' and '2009-01-22 23:59:59' --結(jié)果 /**//* id riqi ---- ------------------------------------------------------ A 2009-01-22 21:22:22.000 B 2009-01-22 19:21:11.000 C 2009-01-22 23:10:22.000 (所影響的行數(shù)為 3 行) */
關(guān)于SqlServer 中怎么實(shí)現(xiàn)按時(shí)間段查詢問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。