日期过滤器的 PHP 查询

时间:2021-05-14 09:37:04

标签: php mysql sql laravel

当字段类型存储为 varchar 且格式为 dd/mm/yyyy 时,如何过滤表数据?

我附上截图。

enter image description here

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

3 个答案:

答案 0 :(得分:1)

更好的方法是通过 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_to_date('23/06/2020', '%d/%m/%Y')

答案 1 :(得分:0)

您可以在 WHERE 子句中 str_to_date varchar 数据类型到日期

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

答案 2 :(得分:0)

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

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

但是,正确的做法是使用正确的类型存储数据:

update t
    set datecol = date_format(str_to_date(datecol, '%d/%m/%Y'), '%Y-%m-%d');

alter table t modify column datecol date;