-- 最近经常看到有人在某段时间区间上喜欢用between ... and ... ,其实,可以直接地说:这种用法是错误的!
-- 查看某一天的数据,或某一段时间内的数据,其实是一个左闭、右开的区间内的数据;
-- 例如:我要查一张表 3月11日到3月24日内所生成的数据,其区间应该为[-03-11 00:00:00, -03-25 00:00:00)
-- 即:不包括右边-03-25 00:00:00时间点的值!
-- 所以,请看如下:
create table t(cdate date);
insert into t(cdate) values(to_date('-03-23 00:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-23 11:09:25','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-24 00:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-24 02:03:45','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-24 10:37:03','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-24 20:55:17','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-24 23:59:59','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-25 00:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into t(cdate) values(to_date('-03-25 01:44:22','yyyy-mm-dd hh24:mi:ss'));
-- 查看24日生成的数据
-- 方法一:用 ... and ...
eygle@SZTYORA> select count(*) from t
2where cdate>=to_date('-03-24','yyyy-mm-dd')
3 and cdate
COUNT(*)
----------
5
-- 方法二:用between ... and ...
eygle@SZTYORA> select count(*) from t
2where cdate between to_date('-03-24','yyyy-mm-dd')
3 and to_date('-03-25','yyyy-mm-dd');
COUNT(*)
----------
6
eygle@SZTYORA> select * from t
2where cdate between to_date('-03-24','yyyy-mm-dd')
3 and to_date('-03-25','yyyy-mm-dd')
4order by cdate;
CDATE
-------------------
-03-24 00:00:00
-03-24 02:03:45
-03-24 10:37:03
-03-24 20:55:17
-03-24 23:59:59
-03-25 00:00:00
已选择6行。
-- 可见方法二用between ... and ... 是错误的,它将-03-25 00:00:00 这一时刻的记录也包括在内啦!
如果觉得《oracle查询大于某个日期的数据 查看某天(或某个时间区间)的数据 请别用between ... and ......》对你有帮助,请点赞、收藏,并留下你的观点哦!