mysql使用between and处理时间区间包不包括左右边界问题

select `mcs_caseset_buy`.`user_id`, `mcs_caseset_buy`.`medname`, `mcs_caseset_buy`.`user_hospital`, `mcs_caseset_buy`.`user_depart`, `mcs_caseset_buy`.`user_carclass`, `mcs_caseset_buy`.`address`, `mcs_wechat_user`.`user_id` as `wx_user`, `mcs_view_log_record`.`view_way`, max(mcs_view_log_record.created_at) as created_at from `mcs_caseset_buy` left join `mcs_wechat_user` on `mcs_wechat_user`.`user_id` = `mcs_caseset_buy`.`user_id` left join `mcs_view_log_record` on `mcs_view_log_record`.`user_id` = `mcs_caseset_buy`.`user_id` where `mcs_view_log_record`.`created_at` between "2018-08-01" and " 2018-08-31" group by `mcs_caseset_buy`.`user_id` order by `mcs_view_log_record`.`created_at` desc

这是我查询语句,使用到了BETWEEN  AND,但是数据空库中明确有2018-08-31的数据,但是就是查询不出来,最后发现我没有发现右边界,但是我记得BETWEEN  AND明明是包含又边界的,所以,不管三七二十一,我把右边界加上了一天

 

$endTime = date("Y-m-d",strtotime("+1 day", strtotime($end)) );//加一天

 

 

然后就可以了,搞得我都晕了,明明包含右边界,为什么会出现这种情况,我就百度了一下,是因为数据库字段类型的原因,我设计的时候是采用datatime类型的

select * from date where test_date between ‘2018-01-21’ and ‘2018-06-07’能查出2018-06-07的数据

如果是datetime类型,’2018-06-07’ 会被转成’2018-06-07 00:00:00’类型,所以查不出来2018-06-07的数据。

 

明白了哟,

你可能感兴趣的:(MySQL基础知识)