从不到60天的MySql返回行

时间:2011-07-06 12:00:22

标签: php mysql sql datetime select

我有以下查询返回表格中的所有行:

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

我想通过不到60天的条目来限制这些结果。我使用以下命令记录了对数据库进行输入的日期:

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

这存储在名为'date'的列中。

有人可以帮我修改我的查询吗?

由于 丹

5 个答案:

答案 0 :(得分:4)

    $query="SELECT * FROM $tbl_name WHERE DATEDIFF(CURDATE(), STR_TO_DATE(date,'%d %M %Y')) <60 ORDER BY job_id DESC"

答案 1 :(得分:4)

如果将日期存储为数据库中的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

答案 2 :(得分:2)

SELECT * FROM $tbl_name FROM_UNIXTIME(date) >= DATE_SUB(CURDATE(), INTERVAL 60 DAY) ORDER BY job_id DESC

答案 3 :(得分:0)

试试这个(未经测试的)

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

答案 4 :(得分:0)

您可以使用

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;

考虑手机号码是客户主数据和账单的关键绑定数据。