2013-02-19 4 views
1

меня говорят 12 результатов в базе данных со столбцами под названиемMYSQL - Как запросить базу данных по времени

thread 

message 

time_posted 

есть 12 результатов, и все они имеют ту же thread ведьмы 1002.

Я м, чтобы получить все результаты после time_posted"2013-03-19 17:36:08". Есть как минимум 4 записи с обеих сторон, поэтому я должен получить 4 записи, которые появятся после этого времени.

До сих пор из всего, что я пробовал, я либо получил пустой массив, либо я получил все, кроме строки, которая имеет 2013-03-19 17:36:08 как временную метку.

Вот что я пробовал:

public function get_messages($thread){ 

     $time = '2013-03-19 17:36:08'; 

     $statement = $this->database->prepare("SELECT * FROM chat WHERE thread = ? AND time_posted > '$time'"); 

     $statement->bindParam(1, $thread); 

     $statement->execute(); 

     $this->result = $statement->fetchAll(PDO::FETCH_ASSOC); 

     return $this->result; 

    } 

Я пробовал как с < И>

Заранее спасибо за любую помощь.

Все самое лучшее.

Connor

+2

ли эти поля определены как 'DATETIME' /' TIMESTAMP' в MySQL? Если это «VARCHAR» или другой тип данных, это не сработает. –

+0

Time_posted TIMESTAMP извините – iConnor

+0

Что произойдет, когда вы запустите свой sql в своей оболочке db? Есть ли какие-либо результаты? – dm03514

ответ

1

Попробуйте это:

$time = '2013-03-19 17:36:08'; 

    $statement = $this->database->prepare("SELECT * FROM chat WHERE thread = ? AND time_posted >= STR_TO_DATE(?, '%Y-%m-%d %H:%i:%s')"); 

    $statement->bindParam(1, $thread); 
    $statement->bindParam(2, $time); 

    $statement->execute(); 
+0

ничего не возвращает, я сделаю снимок экрана моего db now – iConnor

+0

@ConnorMiles Извините, это временная метка, а не unixtimestamp! См. Обновленный ответ. –

+0

нет, что не работает, если я изменил значение> на <, тогда он выводит все, кроме строки с time_posted как 2013-03-19 17:36:08 – iConnor