使用时间戳过滤查询?

时间:2014-09-22 14:25:31

标签: php mysql

我正在尝试编写一个查询,让我记录存储在我的数据库中的两个时间戳之间的所有记录。 正如我所说,在我的数据库中,我有2个属性(startTime,endTime)作为时间戳。在我的php页面中有两个输入元素,允许用户选择格式为%m /%d /%y的日期

在PHP页面中我使用以下查询:

mysql_query("SELECT FROM time_log WHERE 
ticket_user = " . $ticket_user . "AND 
FROM_UNIXTIME( startTime, '%m/%d/%Y' ) >=FROM_UNIXTIME(" . $start . ", '%m/%d/%Y' ) 
AND FROM_UNIXTIME( endTime, '%m/%d/%Y' ) <=FROM_UNIXTIME(" . $end . ", %m/%d/%Y' ");

注意:$start$end是时间戳变量。

当我提交表格时,我什么都没得到。它有什么问题,有些东西需要更新!!

感谢。

2 个答案:

答案 0 :(得分:0)

我发现至少有一件事会导致问题,因此我建议您在每次查询后添加一些检查代码。

$sql = "SELECT FROM time_log 
        WHERE 
          ticket_user = " . $ticket_user . "AND 
          FROM_UNIXTIME( startTime, '%m/%d/%Y' ) >= FROM_UNIXTIME(" . $start . ", '%m/%d/%Y' ) 
          AND FROM_UNIXTIME( endTime, '%m/%d/%Y' ) <= FROM_UNIXTIME(" . $end . ", %m/%d/%Y' "

$result = mysql_query($sql);

if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $sql;
    die($message);
}

这应该告诉您何时在SQL中发生错误而不必在此处提出问题。

答案 1 :(得分:0)

如果存储在数据库中的值是timestamp和$ start,$ end是时间戳,为什么要使用FROM_UNIXTIME()?你不能只比较时间戳吗? 像这样:

mysql_query("SELECT FROM time_log WHERE 
ticket_user = '" . $ticket_user . "' AND 
startTime >= '" . $start . "' 
endTime <= '" . $end . "');