mysql获取当前时间,前一天,后一天(执行效率比较高)
負(fù)責(zé)的項(xiàng)目中,使用的是mysql數(shù)據(jù)庫(kù),頁(yè)面上要顯示當(dāng)天所注冊(cè)人數(shù)的數(shù)量,獲取當(dāng)前的年月日,我使用的是 CURDATE(),
錯(cuò)誤的sql語(yǔ)句
eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < CURDATE()+1;
雖然 獲取到的數(shù)量在測(cè)試環(huán)境中是正確的,但在發(fā)布到線上的時(shí)候,發(fā)現(xiàn)有的時(shí)候數(shù)據(jù)是查詢不到,數(shù)量為0,因此,就上網(wǎng)查詢是不是CURDATE()+1不規(guī)范,發(fā)現(xiàn)mysql官網(wǎng)也是不承認(rèn)時(shí)間直接相加減的,雖然會(huì)將當(dāng)前時(shí)間轉(zhuǎn)換為20160802,這時(shí)候就是比較這一串字符,mysql官網(wǎng)是不承認(rèn)用這種方式比較時(shí)間大小的,因此:
正確的sql語(yǔ)句
eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < DATE_SUB(CURDATE(),INTERVAL -1 DAY);
此時(shí),就用到了DATE_SUB()這個(gè)函數(shù),用法舉例:
今天是2016年08月01日。
date_sub('2016-08-01',interval 1 day) 表示 2016-07-31
date_sub('2016-08-01',interval 0 day) 表示 2016-08-01
date_sub('2016-08-01',interval -1 day) 表示 2016-08-02
date_sub(curdate(),interval 1 day) 表示 2016-07-31
date_sub(curdate(),interval -1 day) 2016-08-02
date_sub(curdate(),interval 1 month) 表示 2016-07-01
date_sub(curdate(),interval -1 month) 表示 2016-09-01
date_sub(curdate(),interval 1 year) 表示 2015-08-01
date_sub(curdate(),interval -1 year) 表示 2017-08-01
?
備注:
SELECT NOW(),CURDATE(),CURTIME()
結(jié)果類似:
| 2016-08-01 16:25:46 | 2016-08-01 | 16:25:46 |
來源:https://blog.csdn.net/csdn_ds/article/details/71728164
總結(jié)
以上是生活随笔為你收集整理的mysql获取当前时间,前一天,后一天(执行效率比较高)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 江科大附近适合山西人吃的美食?
- 下一篇: Mysql SQL查询今天、昨天、n天内