濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > MSSQL SERVER中的BETWEEN AND的使用

MSSQL SERVER中的BETWEEN AND的使用

熱門標(biāo)簽:湖南電腦外呼系統(tǒng)平臺(tái) 地圖標(biāo)注牌 電銷機(jī)器人公司 需要哪些牌照 知名電銷機(jī)器人價(jià)格 長(zhǎng)沙智能外呼系統(tǒng) 廣東防封卡外呼系統(tǒng)原理是什么 分享百度地圖標(biāo)注多個(gè)位置 外呼系統(tǒng)改進(jìn) 菏澤語(yǔ)音電銷機(jī)器人加盟公司

資料 Customer

Id Name RegisterDate
1 澎澎 2007/1/5 00:00:00
2 丁丁 2007/1/6 00:00:00
3 亞亞 2007/1/7 00:00:00

aspx頁(yè)面查詢條件:

最小日期: [2007-01-06]      最大日期: [2007-01-06]

使用的 sql:

SELECT ID, Name, RegisterDate
FROM Customer
WHERE (RegisterDate BETWEEN '2007-01-06' AND '2007-01-06')

結(jié)果是傳回1筆:丁丁, 符合我的預(yù)期

但是 如果丁丁的RegisterDate 的時(shí)間 不是00:00:00呢?

如果資料是這樣

Id Name RegisterDate
1 澎澎 2007/1/5 00:00:00
2 丁丁 2007/1/6 04:37:00
3 亞亞 2007/1/7 00:00:00

一樣的sql

SELECT ID, Name, RegisterDate
FROM Customer
WHERE (RegisterDate BETWEEN '2007-01-06' AND '2007-01-06')

傳回來(lái)的是0筆

 

嗯,因?yàn)槲覜](méi)有給予正確的時(shí)間範(fàn)圍嘛,我的查詢條件應(yīng)該是2007/1/6 號(hào)整天時(shí)間範(fàn)圍。

所以我通常程式在查詢前,都會(huì)先幫日期加1天

RegisterMaxDate = RegisterMaxDate.AddDays(1);

但是,這樣就對(duì)了嗎??

這樣的程式產(chǎn)生的sql是

SELECT ID, Name, RegisterDate
FROM Customer
WHERE (RegisterDate BETWEEN '2007-01-06' AND '2007-01-07')

反而傳回2筆,把亞亞也傳回來(lái)了

因?yàn)?Sql 的 between min And max 是 value >=min value = max 的意思

所以我應(yīng)該更精確的

RegisterMaxDate = RegisterMaxDate.AddDays(1).AddSeconds(-1);

那樣產(chǎn)生的sql 才會(huì)是

SELECT ID, Name, RegisterDate
FROM Customer
WHERE (RegisterDate BETWEEN '2007-01-06' AND '2007/1/6 23:59:59')

傳回1筆,也就是丁丁,我要的資料。


4.3.5  限定數(shù)據(jù)范圍——BETWEEN

在WHERE子句中,使用BETWEEN關(guān)鍵字可以更方便地限制查詢數(shù)據(jù)的范圍。當(dāng)然,還可以使用NOT BETWEEN關(guān)鍵字查詢限定數(shù)據(jù)范圍之外的記錄。


語(yǔ)法格式可表示如下:

 表達(dá)式[NOT] BETWEEN 表達(dá)式1 AND 表達(dá)式2
      

比如,選擇范圍在10~100之間的數(shù),采用BETWEEN運(yùn)算符可以表示為BETWEEN 10 AND 100。

★ 注意 ★

使用BETWEEN限制查詢數(shù)據(jù)范圍時(shí)同時(shí)包括了邊界值,而使用NOT BETWEEN進(jìn)行查詢時(shí)沒(méi)有包括邊界值。

實(shí)例20  使用BETWEEN限定數(shù)據(jù)范圍查詢

本實(shí)例實(shí)現(xiàn)在BookInfo表中,查詢圖書(shū)價(jià)格在35~60之間的所有圖書(shū)記錄。代碼如下:

 USE Library
SELECT *
FROM BookInfo
WHERE price BETWEEN 35 AND 60
運(yùn)行該代碼,得到的查詢結(jié)果如圖4.21所示。
 
圖4.21  查詢BookInfo表中圖書(shū)價(jià)格在35~60之間的記錄


從結(jié)果可見(jiàn),使用BETWEEN關(guān)鍵字查詢包含了邊界值。

實(shí)際上,使用BETWEEN表達(dá)式進(jìn)行查詢的效果完全可以用含有“>=”和“=”的邏輯表達(dá)式來(lái)代替,使用NOT BETWEEN進(jìn)行查詢的效果完全可以用含有“>”和“”的邏輯表達(dá)式來(lái)代替。

對(duì)于實(shí)例20,若采用含有“>=”和“=”的邏輯表達(dá)式來(lái)代替BETWEEN表達(dá)式,代碼如下:

USE Library
SELECT *
FROM BookInfo
WHERE price >=35
AND price =60

執(zhí)行該代碼,會(huì)得到同樣的查詢結(jié)果。

使用BETWEEN運(yùn)算符也可以實(shí)現(xiàn)時(shí)間的比較,下面就給出一個(gè)具體的應(yīng)用實(shí)例。

實(shí)例21  使用BETWEEN運(yùn)算符限定時(shí)間范圍查詢

本實(shí)例實(shí)現(xiàn)在BookInfo表中,查詢出版日期在2004/5/1和2006/1/1之間的所有圖書(shū)記錄。代碼如下:

USE Library
SELECT *
FROM BookInfo
WHERE pubdate BETWEEN '2004/5/1' AND '2006/1/1'
運(yùn)行該代碼,得到的查詢結(jié)果如圖4.22所示。
 
圖4.22  查詢BookInfo表中出版日期在2004/5/1和2006/1/1之間的記錄

標(biāo)簽:珠海 泉州 呼和浩特 福建 天水 美容院 西寧 商洛

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MSSQL SERVER中的BETWEEN AND的使用》,本文關(guān)鍵詞  MSSQL,SERVER,中的,BETWEEN,AND,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MSSQL SERVER中的BETWEEN AND的使用》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MSSQL SERVER中的BETWEEN AND的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    南澳县| 禹州市| 南通市| 兴和县| 沭阳县| 甘洛县| 定襄县| 邻水| 海盐县| 池州市| 建平县| 承德市| 麦盖提县| 彭阳县| 锦屏县| 贵溪市| 新平| 天长市| 阿荣旗| 菏泽市| 交口县| 东明县| 莱芜市| 唐海县| 民权县| 平远县| 浦东新区| 玛纳斯县| 芒康县| 林周县| 崇明县| 子洲县| 永吉县| 合阳县| 麻栗坡县| 宝丰县| 邢台市| 当阳市| 荣成市| 昌江| 嫩江县|