你的位置:
问答吧
-> PHP基础
-> 问题详情
我想查询两个时间段之间的数据,我的sql语句错在哪里?
$riqi1=trim($_POST[riqi1]);
$riqi2=trim($_POST[riqi2]);
$riqi1=date("Y-m-d",strtotime($riqi1));
$riqi2=date("Y-m-d",strtotime($riqi2));
//echo $riqi1;
//echo "
";
//echo $riqi2;
$sql="SELECT * FROM en_dingdan where time between $riqi1 and $riqi2";
其中我做了测试
echo $riqi1;
echo "
";
echo $riqi2;
对应输出一下结果:
2009-06-04
2009-06-13
我数据库是mysql,其中time 字段是date类型
其中有数据为:2009-06-12
按照我上面的思路应该能输出内容,但是测试时什么结果都没有输出
作者: 站长刘
发布时间: 2009-06-12
站长刘
建议不要使用 between 因为这个我查过资料 是双次判断 会影响数据库操作
建议使用 >= and <=
作者: baddie
发布时间: 2009-06-12
请保存时间戳吧,不要保存date类型
作者: xuer
发布时间: 2009-06-12
$sql="SELECT * FROM en_dingdan where time > $riqi1 and time < $riqi2";
mysql可以直接判断这种格式的时间
作者: keailyf
发布时间: 2009-06-12
xuer
谢谢回复,再说明白一点,是不是sql语句没什么问题,你所说的的时间戳能不能再详细说明一点
作者: 站长刘
发布时间: 2009-06-12
keailyf
我这样修改
$sql="SELECT * FROM en_dingdan where time > $riqi1 and time < $riqi2";
$result=$db->query($sql);
while($rs=$db->loop_query($result))
{
if($rs==false)
{
echo "
}
else
{
?>
gsgsgsdgsd
}
}
?>
还是什么也每输出,也没提示错误,就是显示的空白
作者: 站长刘
发布时间: 2009-06-12
恩?都下班了……
作者: 站长刘
发布时间: 2009-06-12
$sql="SELECT * FROM en_dingdan where time > '$riqi1' and time < '$riqi2'";
改成这样呢?
我见过很多这类型的SQL语句 在变量名上都加有单引号的 不知道你这里加上单引号是不是这个原因呢?
作者: tl624220
发布时间: 2009-06-12
$sql="SELECT * FROM en_dingdan where time >= '".$riqi1.'" and time <= '".$riqi2."'";
更正楼上的
否则 单引号的话 就不是变量了
作者: baddie
发布时间: 2009-06-12
这样写,就可以了
$sql="SELECT * FROM en_dingdan where time between '".$riqi1."' and '".$riqi2."'";
作者: 站长刘
发布时间: 2009-06-13
baddie
谢谢你
不过这里'".riqi1."'应该这样写,就ok了
作者: 站长刘
发布时间: 2009-06-13