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 |

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值