PHP日期查询文本类型字段的解决方法

时间:2018-10-15 12:54:09

标签: php mysql database date

我不明白为什么以下命令不起作用,我现在意识到了这一点,因为我在MySQL中的字段类型是text ...

SELECT * 
FROM Scans 
WHERE Date BETWEEN '$sdate' AND '$edate'

$sdate$edate01/01/2018的格式定义日期。这也是它们在数据库Date下的存储方式。

有没有其他解决方法可以让我对日期进行搜索,但是可以使用字符串和文本字段?

1 个答案:

答案 0 :(得分:0)

在构建SQL之前,将日期转换为PHP中的YYYY-MM-DD格式,然后在表中创建数据,如下所示:

$sdate = date('Y-m-d', strtotime($sdate));
$edate = date('Y-m-d', strtotime($edate));

和在SQL中:

SELECT * 
FROM Scans 
WHERE str_to_date(`Date`,"%d/%m/%Y") BETWEEN '$sdate' AND '$edate'

如果您能够将数据库字段类型从text迁移到date并迁移内容,则可以删除str_to_date( Date ,"%d/%m/%Y")部分,但是$sdate$edate仍需要采用YYYY-MM-DD格式。

要安全迁移 意味着:

  1. 创建一个临时字段
  2. 从日期列中读取
  3. 转换为YYYY-MM-DD
  4. 将其写入临时列
  5. 将“日期”列字段类型更改为日期
  6. 将数据复制回
  7. 删除临时列