sql查询在sql中查找日期之间的记录时出现问题

sql查询在sql中查找日期之间的记录时出现问题,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 ="S

我使用这个查询来获取两个日期之间的记录信息

$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中解决这个问题呢?
data
是一种
varchar
类型


谢谢

如果
数据
Ymd
格式的日期字符串组成,您应该能够:

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

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

如果
数据
包含
Ymd
格式的日期字符串,您应该能够:

$data="SELECT * from forma WHERE data BETWEEN '".$start1."' AND '".$end1."'";
您可以比较字符串:
'2012'>'2011'
'b'>'a'
,例如,在您的例子中,
'20121214'>'20120701'

您可以使用:

echo $data ="select * FROM forma WHERE STR_TO_DATE(data, '%d/%m/%Y') BETWEEN '".$start1."' AND '".$end1."' ; 
您还可以使用mysql函数添加额外的包装,以创建您喜欢的日期格式。对于该使用日期格式()

,您可以使用:

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

您还可以使用mysql函数添加额外的包装,以创建您喜欢的日期格式。对于使用日期格式()

是的,我理解-我只是指该列中的格式。如果它是今天的
20121214
,它应该可以工作。是的,我明白了-我只是指那一栏中的格式。如果它是今天的
20121214
,它应该可以工作。它会给我一个错误str_to_date'不是一个可识别的内置函数名。您使用的是哪个版本的MySQL?我使用最新版本的mysql。当您使用“%d/%m/%Y”时,varchar的值必须与2012年1月1日类似。问题是,我在SQL Server上,如上所述:)它给我一个错误str_to_date不是一个可识别的内置函数名。您使用的是哪个版本的MySQL?我使用最新版本的mysql。使用“%d/%m/%Y”时,varchar的值必须与2012年1月1日类似。问题是,我在SQL Server上,如上所述:)