-- 今天
SELECT 【想要的字段】 FROM 【表名】 WHERETO_DAYS(【時間字段名】) =TO_DAYS(now());
-- 昨天
SELECT 【想要的字段】 FROM 【表名】 WHERE TO_DAYS( NOW( ) ) - TO_DAYS(【時間字段名】) = 1;
-- 近七天
SELECT 【想要的字段】 FROM 【表名】 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <=DATE(【時間字段名】);
-- 本週內
SELECT 【想要的字段】 FROM 【表名】 WHERE YEARWEEK(DATE_FORMAT(【時間字段名】,'%Y-%m-%d')) = YEARWEEK(now());
-- 上一週
SELECT 【想要的字段】 FROM 【表名】 WHERE YEARWEEK(DATE_FORMAT(【時間字段名】,'%Y-%m-%d')) = YEARWEEK(now())-1;
-- 30天內 注意這個不是本月是從當天起向前推30天
SELECT 【想要的字段】 FROM 【表名】 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <=DATE(【時間字段名】);
-- 本月
SELECT 【想要的字段】 FROM 【表名】 WHERE DATE_FORMAT( 【時間字段名】, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );
-- 上一個月
SELECT 【想要的字段】 FROM 【表名】 WHERE PERIOD_DIFF( DATE_FORMAT( now( ) , '%Y%m' ) , DATE_FORMAT( 【時間字段名】, '%Y%m' ) ) =1;
-- 本季度
SELECT 【想要的字段】 FROM 【表名】 WHERE QUARTER(【時間字段名】)=QUARTER(now());
-- 上一季度
SELECT 【想要的字段】 FROM 【表名】 WHERE QUARTER(【時間字段名】)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
-- 本年度
SELECT 【想要的字段】 FROM 【表名】 WHERE YEAR(【時間字段名】)=YEAR(NOW());
-- 上一年度
SELECT 【想要的字段】 FROM 【表名】 WHEREYEAR(【時間字段名】)=YEAR(date_sub(now(),interval 1YEAR));
下面是mysql的函數說明:
TO_DAYS() 將日期參數返回轉換爲天,給定一個日期date,返回一個日期號碼(自0年以來的天數)。
NOW() 函數返回當前的日期和時間。
CURDATE() 函數返回當前的日期,是日期不是時間
DATE_SUB(current,INTERVAL 【N】 DAY) 將current向前推 N天
DATE_ADD(current,INTERVAL 【N】 DAY) 將current向後推 N天
YEARWEEK 是獲取年份和週數的一個函數,函數形式爲 YEARWEEK(date[,mode])
DATE_FORMAT( article_last_update, '%Y%m' ) 按照格式 格式化時間字符串
QUARTER(date) 返回日期的一年中的季度,範圍爲1到4。
YEAR(date) 返回日期的年份,範圍爲1000到9999,或者對於“零”日期返回0。
MONTH(date) 返回日期的月份,1月至12月的範圍爲1至12,對於包含月份爲零的日期(如“0000-00-00”或“2008-00-00”),返回0。
WEEK(date[,mode]) 此函數返回日期的周號。 WEEK()的雙參數使您能夠指定星期是從星期天還是星期一開始,以及返回值是在0到53還是從1到53的範圍內。如果省略mode參數,則值 使用了default_week_format系統變量。