前提:
基于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查找日期范围的时候,就会把左右区间边界都找出来。