MySQL 时间查询 忽略时分秒

不知道大家在使用MySQL的时候有没有下面这种需求,求某一天的数据,。但是数据库的格式是datetime 如果你用= 是无法求出的,因为数据格式精准到了时分秒,而你用yyyy-MM-dd去匹配的时候是无法等于的。 例如: 这里我想求出 19年7月20号的数据是。

select * from testTable where EstimatedTime=2019-07-20

上面这条语句是得不到结果的,因为查询的时候会帮我们补齐 00:00:00时分秒的数据

实际上你的SQL就变成了

select * from testTable  where EstimatedTime=2019-07-20 00:00:00

testTable 而数据库里面是没有的。这里要强调一下,如果有,则是可以查出来的,例如图中的31号的数据。

哪我们要如何查出含有第一条数据的结果呢?

方法1: 方法1就很简单暴力了,既然补全了,哪我们就查询20号到21号的数据就行

select * from testTable where EstimatedTime between 2019-07-20 and 2019-07-21

方法2: 虽然上面的方法已经可以得到我们想要的结果,但是在SQL拼接的时候我们需要2个参数,这样加大了我的们工作成本,作为一个懒惰的程序员是不允许这样的事情发生的。所以就有了方法2,运用数据库自带的函数 date_format

select * from testTable where date_format(EstimatedTime,%Y-%m-%d)=2019-07-20
经验分享 程序员 微信小程序 职场和发展