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

Dianthe ·
更新时间:2024-09-20
· 999 次阅读

前提:

基于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查找日期范围的时候,就会把左右区间边界都找出来。
在这里插入图片描述


作者:MicoOu



AND BETWEEN 边界 Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号