MySQL中有多種獲取當前時間的方法,這些方法都可以作為查詢條件使用,還可以作為值插入到數據庫。本文介紹的是查詢的用法,插入雷同。
1.獲取當前完整時間
下面的查詢都省略了from dual關鍵字,可根據需要添加。
1.1 now()函數
select now();
查詢結果:
2021-06-02 11:09:28
1.2 sysdate()函數
select sysdate();
查詢結果:
2021-06-02 11:09:28
1.3 current_timestamp或current_timestamp()
current_timestamp和current_timestamp()函數的效果是一樣的,只不過一個是關鍵字,一個是函數。它們的效果和now()函數也是一樣的!
select current_timestamp; select current_timestamp();
查詢結果:
2021-06-02 11:09:28
2.獲取當前日期
獲取當前日期的方式有多種,這里只介紹常用的幾種:
2.1使用CURDATE()獲取(推薦)
select CURDATE();
查詢結果:
2021-06-02
2.2使用CURRENT_DATE獲取
select current_date;
查詢結果:
2021-06-02
2.3使用date()格式化
select date(now());
查詢結果:
2021-06-02
3.獲取當前短時間
獲取當前短時間的方式有多種,這里只介紹常用的幾種:
3.1使用CURTIME()獲取(推薦)
select CURTIME();
查詢結果:
11:17:19
3.2使用CURRENT_TIME獲取
select CURRENT_TIME;
查詢結果:
11:17:19
4.函數now()和sysdate()的區別
雖然兩者都可以獲取當前的時間,但它們獲取的機制是不同的:
now()取的是語句開始執行的時間 sysdate()取的是動態的實時時間
這么說不明白?先看下面的示例:
說明:先查詢NOW()和SYSDATE(),然后sleep3秒,再查詢NOW()和SYSDATE()
SELECT now(),sysdate(),SLEEP(3),now(),sysdate();
執行結果截圖:
分析結果可得:now()值不發生改變,sysdate()時間在sleep3秒后發生改變。也就是說now()獲取的是sql開始執行的時間,盡管中間出現了其他的操作,都不會影響其值。而sysdate()會影響。