Возвращение строк из MySql менее 60 дней - PullRequest
3 голосов
/ 06 июля 2011

У меня следующий запрос, возвращающий все строки из моей таблицы:

$query="SELECT * FROM $tbl_name ORDER BY job_id DESC";

Я бы хотел ограничить эти результаты записями менее 60 дней. Я записываю дату внесения записи в базу данных, используя:

$dt=date('d M Y');

И это хранится в столбце под названием «дата».

Может ли кто-нибудь помочь мне изменить мой запрос?

Спасибо Dan

Ответы [ 5 ]

4 голосов
/ 06 июля 2011

Если дата хранится в базе данных как varchar, ваш запрос должен быть:

SELECT * 
FROM $tbl_name 
WHERE TO_DATE(date, 'dd MON yyyy') >= DATE_SUB(CURDATE(), INTERVAL 60 DAY)
ORDER BY job_id DESC

, если дата хранится как дата, используйте:

SELECT * 
FROM $tbl_name 
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 60 DAY)
ORDER BY job_id DESC
4 голосов
/ 06 июля 2011
    $query="SELECT * FROM $tbl_name WHERE DATEDIFF(CURDATE(), STR_TO_DATE(date,'%d %M %Y')) <60 ORDER BY job_id DESC"
2 голосов
/ 06 июля 2011
SELECT * FROM $tbl_name FROM_UNIXTIME(date) >= DATE_SUB(CURDATE(), INTERVAL 60 DAY) ORDER BY job_id DESC
0 голосов
/ 27 декабря 2016

Вы можете использовать как

select  b.mobile_number, max(b.bill_number), max(b.created_on), c.name from MasterBill as b, MasterCustomer as c  WHERE b.created_on < NOW() - INTERVAL 60 DAY and b.mobile_number = c.mobile_number group by mobile_number;

считают, что номер мобильного телефона является ключевой привязкой данных к основной записи и счету клиента.

0 голосов
/ 06 июля 2011

Попробуйте это (не проверено)

SELECT * FROM $tbl_name WHERE date >= DATE_SUB(CURDATE(), INTERVAL 60 DAY) ORDER BY job_id DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...