如果今年的当前月份为2019年1月,则我很难找到上个月(DECEMBER)的记录,该记录被视为2018年的月份。
这是我到目前为止已经尝试过的方法,但是它不显示记录。
mysql_query("SELECT * FROM tbl_logs WHERE MONTH(date_added) = MONTH(NOW())-1 ");
//This must display all records of December of last year.
但是在某些查询中,它可以工作。就像找到去年的记录一样:
mysql_query("SELECT * FROM tbl_logs WHERE YEAR(date_added) = YEAR(NOW())-1 ");
//This displays all records of last year
我的输出应该能够显示去年12月的所有记录。
谢谢。
答案 0 :(得分:1)
您可以先使用date_sub
减去一个月,然后使用month()
或year()
提取月份或年份。
上个月:
SELECT *
FROM tbl_logs
WHERE month(date_added) = month(date_sub(now(), INTERVAL 1 MONTH));
去年:
SELECT *
FROM tbl_logs
WHERE year(date_added) = year(date_sub(now(), INTERVAL 1 MONTH));
但是更有效的方法是允许使用索引,因为它可以计算和使用范围。
上个月:
SELECT *
FROM tbl_logs
WHERE date_added >= concat(year(date_sub(now(), INTERVAL 1 MONTH)),
'-',
lpad(month(date_sub(now(), INTERVAL 1 MONTH)), 2, '0'),
'-',
'01')
AND date_added < concat(year(now()),
'-',
lpad(month(now()), 2, '0'),
'-',
'01');
去年:
SELECT *
FROM tbl_logs
WHERE date_added >= concat(year(now()) - 1,
'-01-01')
AND date_added < concat(year(now()),
'-01-01');
您想要的索引将在tbl_logs (date_added)
上。
答案 1 :(得分:1)
这可能有点骇人听闻,似乎Sticky Bit有一个不错的答案,但是您可以尝试一下。
$currentDate = date("m", time());
if($currentDate != 01){
$currentDate--;
}else{
$currentDate = 12;
}
然后插入$currentDate
。
$query = "SELECT * FROM tbl_logs WHERE MONTH(date_added) = MONTH( " . $currentDate . " )";
mysql_query($query );