我有一个列名为DT
的数据库,其值为:
1. 16-05-2015
2. 16-05-2015
3. 30-06-2015
4. 30-06-2015
我正在使用的php中的 Sql
查询是:
$sql = "Select * from logs WHERE (DT<= '$to') AND (DT>= '$from') ";
我也使用过查询:
$sql = "Select * from logs WHERE (DT BETWEEN '$to' AND '$from') ";
两个查询的运行方式都不符合要求。
如果$to=31-05-2015
和$ from = 31之前的任何日期,查询也会显示30-06-2015
日期,但不在范围内。
当$to=30-05-2015
时,会显示正确的结果,但选择30-05-2015
后的任何日期都不会显示正确的范围,可能是什么原因?
答案 0 :(得分:2)
您必须将日期格式更改为yyyy-mm-dd,同时将其保存到数据库并在显示时将其更改为dd-mm-yyyy,并将列的数据类型更改为日期时间以使您查询工作
$newdate = date("d-m-Y", strtotime($yourdate));
答案 1 :(得分:1)
显然,DT
未在您的数据库中配置为date
。
因此值为lexigoraphically,为字符串。
(在lexigoraphical顺序中:30-...
在31-...
之前,无论...
可能是什么)
您可以将数据更改为yyyy-mm-dd
字符串。
或者将列正确配置为日期