Php mysql查询中时间戳的中间运算符

Php mysql查询中时间戳的中间运算符,php,mysql,date,between,Php,Mysql,Date,Between,我有一张从日历上提取日期的表格。该表单将传递开始日期和结束日期。我的数据库表以时间戳格式存储日期。我必须创建一个查询,从数据库表中选择开始日期和结束日期之间的记录。我怎样才能提出疑问?我尝试了下面的代码,但它不起作用 if(isset($_POST['filter'])) { $sid=$_POST['sid']; $start= date("dMY",strtotime($_POST['start'])); $end= date("dM

我有一张从日历上提取日期的表格。该表单将传递开始日期和结束日期。我的数据库表以时间戳格式存储日期。我必须创建一个查询,从数据库表中选择开始日期和结束日期之间的记录。我怎样才能提出疑问?我尝试了下面的代码,但它不起作用

 if(isset($_POST['filter']))
    {
        $sid=$_POST['sid'];
        $start= date("dMY",strtotime($_POST['start']));
        $end= date("dMY",strtotime($_POST['end']));

        $res=$db->fetchAll("SELECT * FROM `logfile` WHERE `site_id`=".$sid." AND (date('dMY',`timestamp`) BETWEEN $start AND $end)");


    }
有什么想法吗


谢谢。

您无缘无故地强迫PHP和MySQL进行大量无用的日期/时间stringnative转换

为什么不干脆拥有:

$start = strtotime($_POST['start']);

SELECT ... WHERE `timestamp` BETWEEN FROM_UNIXTIME($start) AND ...

正如@Matei Mihai所说,您不需要将
$\u POST['start']
$\u POST['end']
转换为时间戳格式,并且必须将日期列括在引号中

您还需要将日期转换为MySQL兼容的格式,如
'2012-08-01'

"SELECT * 
 FROM `logfile` 
 WHERE `site_id`=".$sid." AND 
       (date('dMY',`timestamp`) BETWEEN '$start' AND '$end')");

如果
$\u POST['start']
$\u POST['end']
已经是时间戳格式,请不要更改它们。在其他情况下,只需转换时间戳中的字符串:

$start = strtotime($_POST['start']); // where $_POST['start'] might be 2012/08/07
$end = strtotime($_POST['end']);


$res=$db->fetchAll("SELECT * FROM logfile WHERE site_id=".$sid." AND date BETWEEN $start AND $end"); 

“$start”和“$end)”请将其替换为“$start”和“$end”)括号内的单引号日期始终为单引号或双引号required@MateiMihaiAlso,请注意“datetime”和“timestamp”之间的区别。出于许多原因,“时间戳”通常是最不受欢迎的。尽可能使用“日期时间”:IMHO。。。