我正在尝试编写一个查询,让我记录存储在我的数据库中的两个时间戳之间的所有记录。 正如我所说,在我的数据库中,我有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
是时间戳变量。
当我提交表格时,我什么都没得到。它有什么问题,有些东西需要更新!!
感谢。
答案 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 . "');