2012-12-14 160 views
1

我有这个查询,我用它来获取两个日期之间的记录信息。问题与SQL查询查找SQL日期之间的记录

$start=$_REQUEST['from']; 
$end=$_REQUEST['to']; 
$startd = str_replace('/', '-', $start); 
echo $start1=date('Ymd', strtotime($startd)); 
$endd = str_replace('/', '-', $end); 
echo $end1=date('Ymd', strtotime($endd)); 
echo $data ="SELECT * from forma 
    WHERE DATE(data) BETWEEN '".$start1."' AND '".$end1."' "; 
    $res = odbc_exec($connection, $data) or die(odbc_error()); 

我得到这个错误:

]'DATE' is not a recognized built-in function name., SQL 

但我怎么能解决这个问题在SQL? datavarchar类型..

感谢

回答

0

如果dataYmd格式的日期字符串,你应该能够到:

$data="SELECT * from forma WHERE data BETWEEN '".$start1."' AND '".$end1."'"; 

您可以比较字符串:'2012' > '2011''b' > 'a'和,在你的情况下,例如,'20121214' > '20120701'

+0

数据本身是varchar类型列.. –

+0

是的我明白 - 我只是指该列中的格式。如果是今天的“20121214”,它应该可以工作。 – Pharaoh

+0

它工作完美:) –

1

您可以使用:

echo $data ="select * FROM forma WHERE STR_TO_DATE(data, '%d/%m/%Y') BETWEEN '".$start1."' AND '".$end1."' ; 

您也可以与MySQL功能添加一个额外的包装内,以创建一个你喜欢的日期格式。对于这种使用date_format()

+0

它给了我一个错误 str_to_date'是不是一个公认的内置函数名称 –

+0

你使用的是什么版本的MySQL?我使用最新版本的mysql。当你使用'%d /%m /%Y'时,varchar的值必须像01/01/2012。 –

+0

问题是,我在上面提到的SQL Server上:) –