1、BETWEEN条件的语法为:
expression BETWEEN value1 AND value2;
Oracle BETWEEN条件将返回表达式在value1和value2(含)范围内的记录。
例子:
Oracle的BETWEEN..AND..前后都是闭区间,也就是说包含两个端的数
Mysql数字类型字段使用BETWEEN..AND..也是包含两边的边界值的。
2、使用NOT运算符
Oracle BETWEEN条件也可以与Oracle NOT运算符组合。 以下是将BETWEEN条件与NOT运算符组合的示例。
例子:
3、Oracle 中关于 Between and 日期边界问题
Oracle 在对日期格式的字段进行查询时,会对字符串进行了隐式转换。
3.1 初始化表结构
create table T_CLASS(class_id NUMBER not null,class_name VARCHAR2(100),create_time DATE)
3.2 初始化表数据
insert into T_CLASS (CLASS_ID, CLASS_NAME, CREATE_TIME)
values (1, '一班', to_date('26-03-2019 23:00:00', 'dd-mm-yyyy hh24:mi:ss'));
insert into T_CLASS (CLASS_ID, CLASS_NAME, CREATE_TIME)
values (2, '二班', to_date('26-03-2019 23:00:00', 'dd-mm-yyyy hh24:mi:ss'));
insert into T_CLASS (CLASS_ID, CLASS_NAME, CREATE_TIME)
values (3, '三班', to_date('26-03-2019 23:00:00', 'dd-mm-yyyy hh24:mi:ss'));
insert into T_CLASS (CLASS_ID, CLASS_NAME, CREATE_TIME)
values (4, '四班', to_date('26-03-2019 23:00:00', 'dd-mm-yyyy hh24:mi:ss'));
insert into T_CLASS (CLASS_ID, CLASS_NAME, CREATE_TIME)
values (5, '五班', to_date('26-03-2019 23:00:00', 'dd-mm-yyyy hh24:mi:ss'));
3.3 查询结果
CLASS_ID |
CLASS_NAME |
CREATE_TIME |
1 |
一班 |
2019/3/26 23:00:00 |
2 |
二班 |
2019/3/26 23:00:00 |
3 |
三班 |
2019/3/26 23:00:00 |
4 |
四班 |
2019/3/26 23:00:00 |
5 |
五班 |
2019/3/26 23:00:00 |
3.4查询语句--隐式转换
SELECT * FROM T_CLASS T WHERE T.CREATE_TIME = '2019-03-26'
查询结果 为空
3.5 日期转换为字符串后比较
查询语句--显示转换
SELECT * FROM T_CLASS T WHERE TO_CHAR(T.CREATE_TIME, 'YYYY-MM-DD') = '2019-03-26';
查询结果
CLASS_ID |
CLASS_NAME |
CREATE_TIME |
1 |
一班 |
2019/3/26 23:00:00 |
2 |
二班 |
2019/3/26 23:00:00 |
3 |
三班 |
2019/3/26 23:00:00 |
4 |
四班 |
2019/3/26 23:00:00 |
5 |
五班 |
2019/3/26 23:00:00 |
3.6日期范围比较(边界值)
查询语句--隐式转换
SELECT * FROM T_CLASS T WHERE T.CREATE_TIME BETWEEN '2019-03-01' AND '2019-03-26';
查询结果
3.7日期范围比较(格式化)
查询语句--显示转换
SELECT * FROM T_CLASS T WHERE TO_CHAR(T.CREATE_TIME, 'YYYY-MM-DD') BETWEEN '2019-03-01' AND '2019-03-26';
查询结果
CLASS_ID |
CLASS_NAME |
CREATE_TIME |
1 |
一班 |
2019/3/26 23:00:00 |
2 |
二班 |
2019/3/26 23:00:00 |
3 |
三班 |
2019/3/26 23:00:00 |
4 |
四班 |
2019/3/26 23:00:00 |
5 |
五班 |
2019/3/26 23:00:00 |
对 Oracle 日期字段的查询,建议通过 to_char 或者 to_date 这两个方法将相应的数据进行格式化。
4、MySQL之BETWEEN AND日期包含范围边界查询总结
datetime和timestamp类型的字段进行between and查询时是不包括右边界的,date类型的包含右边界
| id | time_datetime | time_date | time_timestamp |
| 1 | 2020-08-10 23:09:29 | 2020-08-10 | 2020-08-10 23:09:45 |