MYsql 8数据库select * from t_ordersetting where orderDate between ‘2020-2-1‘ and ‘2020-2-31‘语句竟然不能用

## MYsql 8数据库select * from t_ordersetting where orderDate between ‘2020-2-1’ and '2020-2-31’语句竟然不能用

SMM项目,想实现查询每个月的全部数据,代码如下

输入一个日期,获取此日期下 当前月份的 全部数据

//SERVICE
//根据月份查询对应的预约设置数据
public List getOrderSettingByMonth(String date) {//格式:yyyy-MM
String begin = date + “-1”;//2021-2-1
String end = date + “-31”;//2021-2-31
Map<String,String> map = new HashMap<>();
map.put(“begin”,begin);
map.put(“end”,end);
//调用DAO,根据日期范围查询预约设置数据
List list = orderSettingDao.getOrderSettingByMonth(map);

**

//DAO

**

<select id="getOrderSettingByMonth" parameterType="map" resultType="com.itheima.pojo.OrderSetting">
    select * from t_ordersetting where orderDate between #{begin} and #{end}
</select>

//执行结果是查不出数据的

个人觉得好像是mysql8,使用between…and…查询时,当查询的右边界为2021-2-31时,超出了实际范围(因为2月不可能有31天)

于是直接写了sql语句进行测试 结果如下
between 2021-2-1 and 2021-2-29 ----可以查出数据----21年2月有29天

between 2021-2-1 and 2021-2-30 ----无数据----超出了真实的范围

between 2021-3-1 and 2021-3-31 ----可以查出数据----21年3月有31天

between 2021-4-1 and 2021-4-31 ----无数据----21年4月是30天

between 2021-4-1 and 2021-4-30 ----可以查出数据

between 2020-2-1 and 2021-2-28 ----可以查出数据-----20年2月是28天

好像确实是要求 between … and …的取值范围要符合真实存在的范围,否则无法进行查询。

那么请问各位大佬,这种情况该如何解决呢,小弟拜谢各位了!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值