我不明白为什么以下命令不起作用,我现在意识到了这一点,因为我在MySQL中的字段类型是text ...
SELECT *
FROM Scans
WHERE Date BETWEEN '$sdate' AND '$edate'
$sdate
和$edate
以01/01/2018
的格式定义日期。这也是它们在数据库Date
下的存储方式。
有没有其他解决方法可以让我对日期进行搜索,但是可以使用字符串和文本字段?
答案 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格式。
要安全迁移 意味着: