mysql使用between and在处理时间范围时的区间边界问题

前提:

基于emp表,我想获取入职日期在1980-12-17到1981-02-22的人员信息。
在这里插入图片描述
使用between…and…时发现无法获取到日期为1981-02-22的人员记录。
在这里插入图片描述
between是左右闭区间,为什么无法获取右边区间的数据呢?


原因:


1.首先emp表格中hiredate的数据类型是 datetime类型,当你使用between查找日期范围的时候,会将
左区间‘1980-12-17’转化为‘1980-12-17 00:00:00’,
右区间‘1981-02-22’转化为‘1981-02-22 00:00:00’。
而emp表中实际是‘1981-02-22 01:00:00’,写的sql语句截止到1981-02-22的0点以前,所以无法找到时间为1981-02-22的1点的数据。

若我调整查找范围,查找1980-12-17到1981-04-02范围内入职员工信息,就能把右区间的数据查找出来。
原因是右区间‘1981-04-02’转化为‘1981-04-02 00:00:00’,emp表中实际存储的也是‘1981-04-02 00:00:00’。
在这里插入图片描述

2.若emp表格中hiredate的数据类型是date类型,则使用between查找日期范围的时候,就会把左右区间边界都找出来。
在这里插入图片描述

发布了56 篇原创文章 · 获赞 34 · 访问量 3635

猜你喜欢

转载自blog.csdn.net/MicoOu/article/details/104395688