首頁 > 軟體

MySQL獲取當前時間的多種方式總結

2023-02-24 06:03:05

1 獲取當前完整時間

1.1 now()函數

select now();

輸出:

2023-02-15 10:46:17

1.2 sysdate()函數

select sysdate();

輸出:

2023-02-15 10:47:13

1.3 current_timestamp或current_timestamp()

current_timestamp和current_timestamp()函數的效果是一樣的,只不過一個是關鍵字,一個是函數。它們的效果和now()函數也是一樣的!

select current_timestamp;
select current_timestamp();

輸出:

2023-02-15 10:48:43

2.獲取當前日期

獲取當前日期的方式有多種,這裡只介紹常用的幾種:

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.獲取當前短時間

獲取當前短時間的方式有多種,這裡只介紹常用的幾種:

3.1使用CURTIME()獲取(推薦)

select CURTIME();

輸出:

10:51:42

3.2使用CURRENT_TIME獲取

select CURRENT_TIME;

輸出:

10:52:26

4.函數now()和sysdate()的區別

雖然兩者都可以獲取當前的時間,但它們獲取的機制是不同的:

now()取的是語句開始執行的時間

sysdate()取的是動態的實時時間

這麼說不明白?先看下面的範例: 

說明:先查詢NOW()和SYSDATE(),然後sleep3秒,再查詢NOW()和SYSDATE()

分析結果可得:now()值不發生改變,sysdate()時間在sleep3秒後發生改變。也就是說now()獲取的是sql開始執行的時間,儘管中間出現了其他的操作,都不會影響其值。而sysdate()會影響。

補充:mysql獲取當前時間+1天_mysql獲取當前時間,前一天,後一天

錯誤的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()這個函數,用法舉例:

今天是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()

結果類似:

NOW()CURDATE()CURTIME()

2016-08-01 16:25:46

2016-08-01

16:25:46

總結

到此這篇關於MySQL獲取當前時間的多種方式總結的文章就介紹到這了,更多相關MySQL獲取當前時間內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com