Datetime 让mariadb处理类似mysql的日期搜索(例如,日期为2020-12-32)

Datetime 让mariadb处理类似mysql的日期搜索(例如,日期为2020-12-32),datetime,mariadb,Datetime,Mariadb,使用mysql,可以使用sql查询搜索整整一个月,如 select * from table where date_created >= '2020-12-01' and date_created <= '2020-12-32' select*from table where date_created>=“2020-12-01”和date_created如果不修改代码或表定义,则无法使此语句生效: 由于创建的日期被定义为日期类型,where子句中的字符串将在进行比较之前转换为日期。

使用mysql,可以使用sql查询搜索整整一个月,如

select * from table where date_created >= '2020-12-01' and date_created <= '2020-12-32'

select*from table where date_created>=“2020-12-01”和date_created如果不修改代码或表定义,则无法使此语句生效:

由于创建的日期被定义为日期类型,where子句中的字符串将在进行比较之前转换为日期。日期“2020-12-32”无效,将转换为“0000-00-00”,这意味着where条件变为
where date\u created>2020-12-01和date\u created<0000-00-00
:因此该语句不会返回任何行


然而,有趣的是,优化器没有找出不可能的WHERE条件,正在进行扫描。

“这不适用于mariadb”,这是理所当然的。每个有自尊心的数据库都会拒绝这一点。写
='2020-12-01'和date\u create<'2021-01-01'
有什么不对?这是一个有15年历史的php应用程序,有超过一百万行代码在多个地方生成这种代码。由于它与变量和计算一起工作,因此很难找到这种丑陋的方法所使用的所有位置。因此,这将是伟大的,让它也与mariadb工作,所以我没有改变旧的代码。