2013-12-22 2 views
0

Я хочу получить некоторые записи из моего db, у которого есть даты только сегодня, вот мой рабочий код, который получает все данные;Получение результатов только для сегодняшней даты

$result = mysql_query("SELECT *FROM products") or die(mysql_error()); 

// check for empty result 
if (mysql_num_rows($result) > 0) { 
// looping through all results 
// products node 
$response["products"] = array(); 

while ($row = mysql_fetch_array($result)) { 


// temp user array 
    $product = array(); 
    $product["pid"] = $row["pid"]; 
    $product["name"] = $row["name"]; 
    $product["price"] = $row["price"]; 
    $product["description"] = $row["description"]; 
    $product["created_at"] = $row["created_at"]; 
    $product["updated_at"] = $row["updated_at"]; 


    // push single product into final response array 
    array_push($response["products"], $product); 
} 
// success 
$response["success"] = 1; 

// echoing JSON response 
echo json_encode($response); 
} 

а также позволяет пользователю выбирать дату и отображать только те данные, которые были созданы в эту дату.

Полевое;

имя created_at

типа временная метка
нуль Нет
по умолчанию CURRENT_TIMESTAMP

ответ

1

В Mysql не запрос вы можете использовать DATE(), чтобы лишить время суток от вашей временной метки, как так:

SELECT * FROM products WHERE DATE(created_at) = '<date>'; 

т.е. это может быть выполнено как

$result = mysql_query("SELECT * FROM products WHERE DATE(created_at) = '".date("Y\-m\-d")."'") or die(mysql_error()); 

или если у вас есть $ inputdate, установленный для указанной пользователем даты.

$result = mysql_query("SELECT * FROM products WHERE DATE(created_at) = '".$inputdate->format("Y\-m\-d\")."'") or die(mysql_error()); 
+0

поэтому я должен изменить тип created_at на дату(), а не на метку времени? –

+0

Вы могли бы это сделать, если вам не нужна информация о времени дня ни для чего другого. Btw: Обратите внимание, что DATE() - это функция, а также тип DATE. Mysql сбивает с толку. – Mellow

Смежные вопросы