在sql查询中创建带有日期的where函数(Laravel 4)


Creating where function with dates in sql query (Laravel 4)

我有一个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.