[英]MySQL: How to query data of last month if this month of the year is January?
如果今年的當前月份為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月的所有記錄。
謝謝。
您可以先使用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)
。
這可能有點hack,似乎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 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.