MSSQL SERVER中的BETWEEN AND的使用

lv1314慧

lv1314慧

2016-02-19 09:21

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享MSSQL SERVER中的BETWEEN AND的使用的教程,热爱PS的朋友们快点看过来吧!

資料 Customer

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)IdNameRegisterDate1澎澎2007/1/5 00:00:002丁丁2007/1/6 00:00:003亞亞2007/1/7 00:00:00

aspx頁面查詢條件:

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

使用的 sql:

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

結果是傳回1筆:丁丁, 符合我的預期

但是 如果丁丁的RegisterDate 的時間 不是00:00:00呢?

如果資料是這樣

IdNameRegisterDate1澎澎2007/1/5 00:00:002丁丁2007/1/6 04:37:003亞亞2007/1/7 00:00:00

一樣的sql

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

傳回來的是0筆

嗯,因為我沒有給予正確的時間範圍嘛,我的查詢條件應該是2007/1/6 號整天時間範圍。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

RegisterMaxDate = RegisterMaxDate.AddDays(1);

但是,這樣就對了嗎??

這樣的程式產生的sql是

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

反而傳回2筆,把亞亞也傳回來了

因為 Sql 的 between min And max 是 value =min && value = max 的意思

所以我應該更精確的

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

那樣產生的sql 才會是

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

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


4.3.5  限定数据范围——BETWEEN

在WHERE子句中,使用BETWEEN关键字可以更方便地限制查询数据的范围。当然,还可以使用NOT BETWEEN关键字查询限定数据范围之外的记录。

语法格式可表示如下:

 表达式[NOT] BETWEEN 表达式1 AND 表达式2  

比如,选择范围在10~100之间的数,采用BETWEEN运算符可以表示为BETWEEN 10 AND 100。

★ 注意 ★

使用BETWEEN限制查询数据范围时同时包括了边界值,而使用NOT BETWEEN进行查询时没有包括边界值。

实例20  使用BETWEEN限定数据范围查询

本实例实现在BookInfo表中,查询图书价格在35~60之间的所有图书记录。代码如下:

 USE Library
SELECT *
FROM BookInfo
WHERE price BETWEEN 35 AND 60
运行该代码,得到的查询结果如图4.21所示。
 图4.21  查询BookInfo表中图书价格在35~60之间的记录

从结果可见,使用BETWEEN关键字查询包含了边界值。

实际上,使用BETWEEN表达式进行查询的效果完全可以用含有“=”和“=”的逻辑表达式来代替,使用NOT BETWEEN进行查询的效果完全可以用含有“”和“”的逻辑表达式来代替。

对于实例20,若采用含有“=”和“=”的逻辑表达式来代替BETWEEN表达式,代码如下:

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

执行该代码,会得到同样的查询结果。

使用BETWEEN运算符也可以实现时间的比较,下面就给出一个具体的应用实例。

实例21  使用BETWEEN运算符限定时间范围查询

本实例实现在BookInfo表中,查询出版日期在2004/5/1和2006/1/1之间的所有图书记录。代码如下:

USE Library
SELECT *
FROM BookInfo
WHERE pubdate BETWEEN '2004/5/1' AND '2006/1/1'
运行该代码,得到的查询结果如图4.22所示。
 图4.22  查询BookInfo表中出版日期在2004/5/1和2006/1/1之间的记录
展开更多 50%)
分享

猜你喜欢

MSSQL SERVER中的BETWEEN AND的使用

编程语言 网络编程
MSSQL SERVER中的BETWEEN AND的使用

关于MSSQL SERVER 2005中数据乱码的问题

编程语言 网络编程
关于MSSQL SERVER 2005中数据乱码的问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

关于MSSQL Server中DATETIME类型数据的处理

SQLServer
关于MSSQL Server中DATETIME类型数据的处理

建立安全的MSSQL SERVER启动账号

SQLServer
建立安全的MSSQL SERVER启动账号

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Web环境下MSSQL Server中数据的磁带备份与恢复

SQLServer
Web环境下MSSQL Server中数据的磁带备份与恢复

常用的 MSSQL Server 数据修复命令

SQLServer
常用的 MSSQL Server 数据修复命令

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Ajax——异步检查用户名是否存在示例

Ajax——异步检查用户名是否存在示例

解析c++中的默认operator=操作的详解

解析c++中的默认operator=操作的详解
下拉加载更多内容 ↓