天天看點

mysql目前時間前後n天_【msyql_擷取時間的前後幾天函數date_sub】

select now()-- 2017-05-16 16:48:02

select curdate()  -- 2017-05-16

select curdate() + 1 -- 20170517

select curtime() -- 16:48:21

select date_sub(CURDATE(),interval + 1 DAY) -- 2017-05-15

select date_sub(CURDATE(),interval 0 DAY) -- 2017-05-16

select date_sub(CURDATE(),interval + 1 DAY) -- 2017-05-17

select date_sub(curdate(),interval 1 month) -- 2017-04-16

select date_sub(curdate(),interval -1 month) -- 2017-06-16

select date_sub(curdate(),interval 1 year) -- 2016-05-16

select date_sub(curdate(),interval -1 year) -- 2018-05-16

mysql目前時間前後n天_【msyql_擷取時間的前後幾天函數date_sub】

例子:

錯誤的sql語句

eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < CURDATE()+1;

雖然 擷取到的數量在測試環境中是正确的,但在釋出到線上的時候,發現有的時候資料是查詢不到,數量為0,是以,就上網查詢是不是CURDATE()+1不規範,發現mysql官網也是不承認時間直接相加減的,雖然會将目前時間轉換為20160802,這時候就是比較這一串字元,mysql官網是不承認用這種方式比較時間大小的,是以:

正确的sql語句

eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < DATE_SUB(CURDATE(),INTERVAL -1 DAY);

此時,就用到了DATE_SUB()這個函數,用法舉例: