проблема выбрать в MySQL - PullRequest
1 голос
/ 16 декабря 2009

теперь у меня есть файлы таблицы вызовов его время имеет этот штамп 1260606325 сейчас я пытаюсь получить файлы, которые были добавлены за последние 7 дней

SELECT * FROM `files` WHERE time > SUBDATE(NOW(),604800)

его возвращаемый ноль

как я могу это сделать

Ответы [ 4 ]

4 голосов
/ 16 декабря 2009

Посмотрите, что делает SUBDATE - он принимает свой параметр 2. как дни по умолчанию. В этом случае он также создает тип datetime, у вас, похоже, просто есть отметка времени unix.

mysql> SELECT  SUBDATE(NOW(),604800);
+-----------------------+
| SUBDATE(NOW(),604800) |
+-----------------------+
| 0354-01-27 12:31:30   |
+-----------------------+

Вы бы хотели

SELECT * FROM `files` WHERE from_unixtime(time) > SUBDATE(NOW(),interval 604800 second);

или

SELECT * FROM `files` WHERE from_unixtime(time) > SUBDATE(NOW(),7)

или

SELECT * FROM `files` WHERE  time > (UNIX_TIMESTAMP() - 604800);
1 голос
/ 16 декабря 2009

Вы должны указать единицу измерения во втором параметре SUBDATE:

SELECT * FROM `files` WHERE time > SUBDATE(NOW(), INTERVAL 7 DAY);

Если вы не укажете единицу, дни по умолчанию, поэтому 604800 должно быть 7.

1 голос
/ 16 декабря 2009

вы можете посчитать время в PHP через time()-(7*86400) и использовать это значение?

0 голосов
/ 16 декабря 2009

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

SELECT * FROM files WHERE time > SUBDATE(CURDATE(), 7)

или

SELECT * FROM files WHERE time > SUBDATE(NOW(), 7)

в зависимости от типа данных time.

Вы можете найти информацию обо всех функциях даты в MySQL здесь .

Единицей по умолчанию для второго параметра SUBDATE является дни:

SUBDATE (дата, интервал expr), SUBDATE (expr, дни)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...