簡體   English   中英

MySQL:如果一年中的這個月是一月,如何查詢上個月的數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM