Самый быстрый способ предотвратить возврат данных SQL старше данных - PullRequest
1 голос
/ 15 февраля 2009

У меня довольно сложная база данных с множеством разных таблиц для разных вещей, каждая из которых имеет временную метку (формат Y-M-D ч: м: с)

Есть ли способ ограничить мой запрос SQL только результатами за определенный промежуток времени, например неделю назад?

Если нужно, у меня есть функция для преобразования этих временных меток в unix как

sqlToUnix($date);
//returns $unixTime

так например

mysql_query(SELECT id FROM entries WHERE entries.date >= $formattedDateString);

Спасибо!

Напоминаем, что даты в базе данных имеют формат: 2009-02-15 08: 47: 45

Ответы [ 3 ]

4 голосов
/ 15 февраля 2009

Это вполне возможно с оператором BETWEEN (начиная с MySQL 4.0):

mysql_query("SELECT id FROM entries WHERE entries.date BETWEEN 'Y-M-D h:m:s' AND 'Y-M-D h:m:s'");

Кроме того, чтобы вычислить отметку времени за неделю до текущей даты, взгляните на MySQL Online Documentation .

1 голос
/ 15 февраля 2009

Я сам пользователь MSSQL, но, просматривая онлайн, я вижу несколько полезных сведений для MySQL 5.0 ...

CURDATE ()
DATE_ADD ()

С этим вы сможете создать предложение WHERE что-то вроде ...

WHERE
   <field> >= date_add(curdate(), INTERVAL -7 DAY)

Как уже упоминалось в другом месте, если поле является строкой, преобразуйте его в дату, используя STR_TO_DATE ()

0 голосов
/ 15 февраля 2009

Да, как вы написали, вы можете сделать больше или меньше ограничений на вывод. Где проблема?

Если ваше поле является не полем timestamp / datetime, а строкой, используйте функцию MySQL STR_TO_DATE () (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html)

...