MySQL 时间查询 忽略时分秒

不知道大家在使用MySQL的时候有没有下面这种需求,求某一天的数据,。但是数据库的格式是datetime 如果你用= 是无法求出的,因为数据格式精准到了时分秒,而你用yyyy-MM-dd去匹配的时候是无法等于的。
例如:
MySQL 时间查询 忽略时分秒_第1张图片
这里我想求出 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'

你可能感兴趣的:(数据库)