Bootstrap

SQL SERVER之BETWEEN……AND……

1.语法


SELECT column_name(s) FROM table_name  WHERE column_name BETWEEN value1 AND value2

查询column_name的值介于value1和value2之间的 column_name(s)集合,这一句大家都很明白,清楚肯定会说这不是废话吗?有些东西我想初学者还是模糊着,因为有时候一认真你就输了,所以小伙伴还是需要把根基打牢靠。

 

2.实例

2.1 实数型列的过滤

select * from ITEM where ITEM_ID between 1 and 10

--ITEM_ID数据类型为INT,返回结果集为如图所示:

 

2.2 日期型列的过滤

 

select * from FORKLIFT_TASK where TASK_DATE between '2014-01-13' and '2014-01-13' 

----TASK_DATE 为日期型列【DATE】型数据,返回结果集为:

 

2.3.长日期型列的过滤

select * from FORKLIFT_TASK where CREATION_DATE between '2014-01-13' and '2014-01-13' 

--CREATION_DATE 【DATETIME】型数据,返回结果集如下所示:

为什么返回的是0行数据呢?

 

 

然后我们来更换一种SQL的书写方式:

select * from FORKLIFT_TASK where CREATION_DATE between '2014-01-13' and '2014-01-13 23:59:59' 

返回结果集为:88行。就是加了个"23:59:59"导致查询结果为88行,表明between……and……如果在DATETIME类型的数据查询中需要加时分秒,在DATE型中可加时分秒可不加时分秒,但是这里加十分秒的话我们可以清晰的看见加时分秒表明的是日期是同一个日期,也就是同在13日的00:00:00时刻到你所加的那个点是可以查到数据的,就像上面那种情况一样;

 

在不加时分秒的时候这时候你需要在日期上加一天,那么这样你就能查询到begin Date那个日期的24小时的数据了,如下图所示。

 

 

回到本节介绍的长日期型的between …… and ……的用法

这里所谓长日期型的,我个人认为是带有时分秒的,在SQL Server和Oracle数据库中均有这个数据类型,即为:DATETIME.

通常在DATETIME类型的查询语句通过between …… and ……来过滤时,需要前后两个时间点都带上时分秒即为yyyy-MM-dd hh:mm:ss(SQL SERVER 写法,Oracle中应该为YYYY-MM-DD HH24:MI:SS).如下图所示:

 

 

2.4.字符串数据类型过滤

这里给出两个例子,一个是直接select然后按字段BATCH_NO列的字段升序排列,另外一个用between…… and ……对其进行'tt'和'ww’进行过滤,具体规律如下面两图对比说明。

 

添加过滤条件

 

;