日期过滤器的PHP查询

日期过滤器的PHP查询,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,当字段的类型存储为varchar且其格式为dd/mm/yyyy时,如何筛选表的数据 我正在附上一张截图 它只根据日期进行过滤,不会检查月份和年份。 如果SQL解决方案不可用,请告诉我如何在PHP中处理此问题。您可以在WHERE子句中str_to_date varchar数据类型to date SELECT*FROM details其中str_to_date(datenew,'%d/%m/%Y')>='20200603' 将列转换为日期!您可以在where子句中执行此操作: where str_

当字段的类型存储为
varchar
且其格式为
dd/mm/yyyy
时,如何筛选表的数据

我正在附上一张截图

它只根据日期进行过滤,不会检查月份和年份。
如果SQL解决方案不可用,请告诉我如何在PHP中处理此问题。

您可以在WHERE子句中str_to_date varchar数据类型to date

SELECT*FROM details其中str_to_date(datenew,'%d/%m/%Y')>='20200603'

将列转换为日期!您可以在
where
子句中执行此操作:

where str_to_date(datecol, '%d/%m/%Y') >= ? and
      str_to_date(datecol, '%d/%m/%Y') < ?

更好的方法是通过
STR_to_date
将列更新为date,以便在更改列时不会丢失数据,然后更改列并将日期设置为其数据类型

UPDATE`details`SET`datenew`=STR_TO_DATE(`datenew`,“%d/%m/%Y”);
ALTER TABLE`details`MODIFY`datenew`DATE
然后您可以轻松地运行查询

SELECT*FROM`details`WHERE`datenew`>=str\u to\u date('2020年6月23日','%d/%m/%Y'))

将存储的数据(以及条件,如果需要)转换为日期数据类型,然后进行筛选。但最好的方法是修改列并为其设置日期数据类型。正确的解决方案是将该列转换为实际的日期列并转换数据,然后您可以直接进行筛选。否则,请参见。。。或者至少将存储格式从dd/mm/yyyy更改为yyyy/mm/dd-这允许以字符串格式正确比较日期。不工作抱歉我在MSSQL中编写了此消息,我已将其更新为MySQL。它可以工作,但没有任何单独的查询根据该格式筛选此数据库。如果它可以工作,请回答问题并接受它。是的,您已经通过基于该格式进行更新并将其更改为正确的数据类型来过滤它了。
update t
    set datecol = date_format(str_to_date(datecol, '%d/%m/%Y'), '%Y-%m-%d');

alter table t modify column datecol date;