mysql对数据表中的日期(datetime或者是timestamp)进行between...and容易踩的坑。

编程入门 行业动态 更新时间:2024-10-06 11:23:00

mysql对数据表中的日期(datetime<a href=https://www.elefans.com/category/jswz/34/1753190.html style=或者是timestamp)进行between...and容易踩的坑。"/>

mysql对数据表中的日期(datetime或者是timestamp)进行between...and容易踩的坑。

话不多说:代码容易踩的坑我来踩,免费的赞赞你来点。

比如现在我有一张表,叫做customer客户表,涉及到的字段有:

code        name               short_name        address                creator        created_datetime 
CS001     客户1                    CS1          广东省广州市黄浦区    zkw       2023-09-22 11:25:49

CS002     客户2                   CS2          广东省广州市天河区    zkw       2023-09-23 10:15:19  

CS003     客户3                    CS3          广东省广州市南沙区    zkw       2023-09-23 12:05:49  

CS004     客户4                    CS4          广东省广州市从化区    zkw       2023-09-23 14:13:40 

CS005     客户5                    CS5          广东省广州市增城区    zkw       2023-09-25 11:25:49   

CS005     客户6                    CS6          广东省广州市番禺区    zkw       2023-09-26 09:20:19   

然后我现在要查看创建时间从 2023-09-23到2023-09-25的,那么我们的sql就会这样写:

select * from customer where created_datetime between "2023-09-23" and "2023-09-25"

但是最终结果是:

code        name               short_name        address                creator        created_datetime 

CS002     客户2                   CS2          广东省广州市天河区    zkw       2023-09-23 10:15:19  

CS003     客户3                    CS3          广东省广州市南沙区    zkw       2023-09-23 12:05:49  

CS004     客户4                    CS4          广东省广州市从化区    zkw       2023-09-23 14:13:40 

怎么我原先数据表里面有2023-09-25的,为啥没查出来呢?出现的原因是:

因为咱们现在between的日期是yyyy-mm-dd,而mysql的日期类型是timestamp或者是datetime,他们的形式是yyyy-mm-dd hh:mm:ss,类型不匹配,所以mysql就会将between...and的日期当做yyyy-mm-dd 00:00:00来看待,所以between "2023-09-23" and "2023-09-25"就会看作是

  "2023-09-23 00:00:00" 和  "2023-09-25 00:00:00"

所以就不会查出原先数据表里面的"2023-09-25 11:25:49 ",那么对于这种情况得如何处理呢?

有2种方法:

①and后面的日期的日+1天,在java里面我们可以使用java8提供的

LocalDate.parse(LocalDate localDate).plusDays(1);

如果需要再转化为String类型,那么就再调用LocalDate的format(DateTimeFormatter.ISO_LOCAL_DATE)转化成"yyyy-mm-dd"。

②使用mysql的内置函数STR_TO_DATE("column","Y%-m%-d%"),有图有真相。

总结:mysql遇到日期(datetime或者是timestamp)进行between...and;如果类型与原先数据表中的类型不匹配,可以将右边界日+1或者使用mysql的内置函数str_to_date(column , 'Y%-m%-d')

更多推荐

mysql对数据表中的日期(datetime或者是timestamp)进行between...and容易踩的坑。

本文发布于:2024-02-13 13:31:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758549.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:或者是   数据表   日期   mysql   datetime

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!