首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 命令列查詢當前用戶、日期、時間完整指南

     編輯:MySQL 綜合教學

MySQL 命令列查詢當前用戶、日期、時間完整指南

在 MySQL 客戶端中,快速獲取當前連線用戶、系統日期、時間資訊是除錯、審計、時區驗證的常見需求。本文整理標準函數與實戰輸出範例。

核心函數對照表

需求函數回傳型別範例輸出
當前登入用戶 (含主機)USER() / CURRENT_USER()VARCHARroot@localhost / app_user@%
當前日期CURRENT_DATE() / CURDATE()DATE2024-01-15
當前時間CURRENT_TIME() / CURTIME()TIME14:30:45
當前日期時間NOW() / SYSDATE() / CURRENT_TIMESTAMP()DATETIME2024-01-15 14:30:45

關鍵差異:USER() vs CURRENT_USER()

  • USER():回傳**客戶端實際連線時指定的用戶名與主機**,不受權限系統解析影響。
    例:以 mysql -u root -h 127.0.0.1 連線 → root@127.0.0.1
  • CURRENT_USER():回傳**MySQL 權限系統實際認證通過的用戶帳號** (經過主機通配符匹配、代理用戶解析)。
    例:同上連線若匹配 root@localhost → root@localhost
  • 審計/除錯用 USER(),**權限檢查用 CURRENT_USER()**。

關鍵差異:NOW() vs SYSDATE()

  • NOW():回傳**語句開始執行時的固定時間點**,同一語句多次呼叫結果相同。支援複制 (Binlog 記錄固定值)。
  • SYSDATE():回傳**函數實際執行瞬間的真實時間**,同一語句多次呼叫可能不同。不支援 Statement 格式複制 (需 Row 格式)。
  • 生產環境建議統一使用 NOW(),確保複制一致性與可預測性。

實戰操作流程

C:\> mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor...

mysql> SELECT USER(), CURRENT_USER();
+------------------+------------------+
| USER()           | CURRENT_USER()   |
+------------------+------------------+
| root@localhost   | root@localhost   |
+------------------+------------------+

mysql> SELECT CURDATE(), CURTIME(), NOW();
+------------+-----------+---------------------+
| CURDATE()  | CURTIME() | NOW()               |
+------------+-----------+---------------------+
| 2024-01-15 | 14:30:45  | 2024-01-15 14:30:45 |
+------------+-----------+---------------------+

mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(2) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2024-01-15 14:30:45 |        0 | 2024-01-15 14:30:47 |  <-- 時間推進 2 秒
+---------------------+----------+---------------------+

mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(2) | NOW()               |
+---------------------+----------+---------------------+
| 2024-01-15 14:30:47 |        0 | 2024-01-15 14:30:47 |  <-- 時間固定
+---------------------+----------+---------------------+

圖示說明

執行結果示意圖:

USER、CURDATE、CURTIME、NOW 執行結果

進階應用:時區驗證與轉換

-- 查看會話/全域時區
SELECT @@session.time_zone, @@global.time_zone;
-- 結果: SYSTEM / +08:00 / UTC 等

-- 當前會話設定時區
SET time_zone = '+00:00'; -- UTC
SELECT NOW(); -- 顯示 UTC 時間

-- 時間戳轉換 (應用層常用)
SELECT FROM_UNIXTIME(1705312245); -- 秒級時間戳轉 DATETIME
SELECT UNIX_TIMESTAMP(NOW());     -- DATETIME 轉秒級時間戳

總結

MySQL 內建函數 USER()/CURRENT_USER()、CURDATE()/CURTIME()/NOW() 提供精確的連線身份與時間資訊。理解 USER() vs CURRENT_USER()、NOW() vs SYSDATE() 的語義差異,對於權限審計、複制一致性、跨時區應用至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved