對于MySQL數(shù)據(jù)庫而言,在某些業(yè)務(wù)場景下需要獲取上一個月的數(shù)據(jù),這里我們通過MONTH()函數(shù)和NOW()函數(shù)來實(shí)現(xiàn)。
SELECT *
FROM table_name
WHERE DATE_FORMAT(date_column, '%Y%m') = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m');
以上SQL語句中,使用DATE_FORMAT(date_column, '%Y%m')來提取數(shù)據(jù)表中的日期列,并轉(zhuǎn)換為“年月”格式,再與當(dāng)前時間的上一個月比較,以此來篩選出上一個月的數(shù)據(jù)。
需要注意的是,由于MySQL的日期時間類型是精確到秒的,而不是只包含日期的,因此上述代碼中需要使用DATE_FORMAT()函數(shù)來快捷地將數(shù)據(jù)表中日期列的天數(shù)部分去除。
如果要獲取更加靈活的時間區(qū)間數(shù)據(jù),我們可以將上述代碼中的NOW()函數(shù)和DATE_SUB()函數(shù)替換成相應(yīng)的時間戳,例如:
SELECT *
FROM table_name
WHERE date_column BETWEEN UNIX_TIMESTAMP('2021-03-01 00:00:00')
AND UNIX_TIMESTAMP('2021-03-31 23:59:59');
以上代碼中,使用UNIX_TIMESTAMP()函數(shù)將時間字符串轉(zhuǎn)換為對應(yīng)的時間戳,再通過BETWEEN語句篩選出3月份的數(shù)據(jù)。
綜上所述,獲取上一個月的數(shù)據(jù)可以用MONTH()函數(shù)和NOW()函數(shù),也可以使用時間戳。需要根據(jù)具體業(yè)務(wù)需求來靈活應(yīng)用。