MySQL獲取當(dāng)前時(shí)間的多種方式總結(jié)
1 獲取當(dāng)前完整時(shí)間
1.1 now()函數(shù)
select now();
輸出:
2023-02-15 10:46:17
1.2 sysdate()函數(shù)
select sysdate();
輸出:
2023-02-15 10:47:13
1.3 current_timestamp或current_timestamp()
current_timestamp和current_timestamp()函數(shù)的效果是一樣的,只不過一個(gè)是關(guān)鍵字,一個(gè)是函數(shù)。它們的效果和now()函數(shù)也是一樣的!
select current_timestamp; select current_timestamp();
輸出:
2023-02-15 10:48:43
2.獲取當(dāng)前日期
獲取當(dāng)前日期的方式有多種,這里只介紹常用的幾種:
2.1使用CURDATE()獲?。ㄍ扑])
select CURDATE();
輸出:
2023-02-15
2.2使用CURRENT_DATE獲取
select current_date;
輸出:
2023-02-15
2.3使用date()格式化
select date(now());
輸出:
2023-02-15
3.獲取當(dāng)前短時(shí)間
獲取當(dāng)前短時(shí)間的方式有多種,這里只介紹常用的幾種:
3.1使用CURTIME()獲?。ㄍ扑])
select CURTIME();
輸出:
10:51:42
3.2使用CURRENT_TIME獲取
select CURRENT_TIME;
輸出:
10:52:26
4.函數(shù)now()和sysdate()的區(qū)別
雖然兩者都可以獲取當(dāng)前的時(shí)間,但它們獲取的機(jī)制是不同的:
now()取的是語句開始執(zhí)行的時(shí)間
sysdate()取的是動態(tài)的實(shí)時(shí)時(shí)間
這么說不明白?先看下面的示例:
說明:先查詢NOW()和SYSDATE(),然后sleep3秒,再查詢NOW()和SYSDATE()
分析結(jié)果可得:now()值不發(fā)生改變,sysdate()時(shí)間在sleep3秒后發(fā)生改變。也就是說now()獲取的是sql開始執(zhí)行的時(shí)間,盡管中間出現(xiàn)了其他的操作,都不會影響其值。而sysdate()會影響。
補(bǔ)充:mysql獲取當(dāng)前時(shí)間+1天_mysql獲取當(dāng)前時(shí)間,前一天,后一天
錯(cuò)誤的sql語句
eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < CURDATE()+1;
雖然 獲取到的數(shù)量在測試環(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í)間直接相加減的,雖然會將當(dāng)前時(shí)間轉(zhuǎn)換為20160802,這時(shí)候就是比較這一串字符,mysql官網(wǎng)是不承認(rèn)用這種方式比較時(shí)間大小的,因此:
正確的sql語句
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é)果類似:
NOW()CURDATE()CURTIME()
2016-08-01 16:25:46
2016-08-01
16:25:46
總結(jié)
到此這篇關(guān)于MySQL獲取當(dāng)前時(shí)間的多種方式總結(jié)的文章就介紹到這了,更多相關(guān)MySQL獲取當(dāng)前時(shí)間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mac環(huán)境mysql5.7.21 utf8編碼問題及解決方案
本篇教程給大家簡單介紹下Mac環(huán)境mysql5.7.21 utf8編碼問題及解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-03-03mysql實(shí)現(xiàn)數(shù)據(jù)文件存儲到指定分區(qū)的示例代碼
MySQL中可以使用分區(qū)表來提高數(shù)據(jù)檢索速度,本文主要介紹了mysql實(shí)現(xiàn)數(shù)據(jù)文件存儲到指定分區(qū)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01MySQL數(shù)據(jù)庫備份恢復(fù)實(shí)現(xiàn)代碼
這篇文章主要介紹了MySQL數(shù)據(jù)庫備份恢復(fù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06