0

我有一个 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 时间戳进行比较。我尝试strtotime()在 SQL 中插入某种形式的函数,但这会导致错误。有没有办法避免从数据库中提取所有记录并在 PHP 中进行比较?即是否可以在 SQL 查询中执行过滤器?

非常感谢

4

1 回答 1

0

您可以查看 MySQL 函数 FROM_UNIXTIME:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime

或者您可以使用 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.
于 2013-08-07T20:56:51.953 回答