我有一个php函数,它基于"created_at"列检索记录列表。
public function browseResults($days = 90) {
$search_period_in_seconds = 60*60*24*$days;
$today = time();
$reference_date = $today - $search_period_in_seconds;
$query ="SELECT * FROM brands";
$query .=" WHERE created_at > ".$reference_date;
$results = DB::select($query); // This is laravel syntax for performing the query.
这不会返回所需的结果。我认为问题是因为MySql数据库以以下格式存储日期:2013-08-04 15:54:42
,然后将其与unix时间戳进行比较。我曾尝试在SQL中插入某种形式的strtotime()
函数,但这导致了一个错误。有没有办法避免从数据库中提取所有记录并用PHP进行比较?即是否可以在SQL查询中执行筛选?
非常感谢
您可以查看MySQL函数FROM_UNIXTIME:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-一次性
或者你可以用PHP创建正确的日期:
$datetime = new DateTime("-" . $days . " days"); // minus $days days
$date_sql = $datetime->format("Y-m-d H:i:s"); // Format the date as a string ex. 2013-08-07 00:00:00
$query ="SELECT * FROM brands";
$query .=" WHERE created_at > '$date_sql'";
// Etc.