我无法获取特定日期的数据库中的值
样本值:
$from= 12/15/2012 $to= 12/15/2012
$from= 12/16/2012 $to= 12/16/2012
$from= 12/17/2012 $to= 12/17/2012
php脚本:
$query=" select * from call where (date_time BETWEEN '$from' AND '$to') ORDER BY date_time DESC";
我的桌子上的价值是我的约会时间在其中
我数据库中的ex值:
12/15/2012 2:51
12/15/2012 2:21
12/15/2012 2:55
12/15/2012 3:12
12/16/2012 2:51
12/16/2012 2:21
12/17/2012 2:55
12/17/2012 3:12
当我搜索from 12/15/2012 to 12/15/2012
时
它不显示
12/15/2012
但如果我搜索
来自12/15/2012 to 12/16/2012
它不仅显示值 12/15/2012但也适用于12/16/2012
我该怎么做才能将所有值仅包含在特定日期?
答案 0 :(得分:4)
首先,您应该将时间值存储在DATETIME
(或可能TIMESTAMP
)列中。然后按照this question给出的答案。
但是,如果确实坚持使用字符串执行此操作,则可以始终使用LIKE
比较:
SELECT * FROM `call` WHERE date_time LIKE '12/15/2012 %'
当然,这仅适用于查找一天的所有记录(或通过适当修改,一小时/分钟/月/年/等)。如果您需要更复杂的选择标准,我强烈建议您切换到真正的DATETIME
列。
答案 1 :(得分:3)
假设您将日期存储为日期时间字段,则应将数据转换为Date
类型。
当你写:
$from= 12/15/2012
PHP做分工:12/15然后(12/15)/ 2012
方法将$from
声明为字符串并在查询中转换为日期:
$from= '12/15/2012'
...
"select * from call where (date_time BETWEEN STR_TO_DATE('$from', '%m/%d/%Y') ..."
索引友好计划的正确查询是:
select *
from `call`
where date_time >= STR_TO_DATE('$from', '%m/%d/%Y') and
date_time < date_add( STR_TO_DATE('$to', '%m/%d/%Y'), interval 1 day)