Oracle/MySQL between and 边界日期问题

 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 |

猜你喜欢

转载自blog.csdn.net/weixin_54108529/article/details/125142751
今日推荐