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
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMhZjMyYzYxEmNjJGOyMmZ3YWZ3EmZ3kjY2YWNyQjM58CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
例子:
錯誤的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()這個函數,用法舉例: