應用場景
-
在數據表中,要記錄的每條數據是什么時候創建的,不需要應用程序去特意記錄,而是由數據庫獲取當前時間自動記錄創建時間。
-
在數據庫中,要記錄每條數據是什么時候修改的,不需要應用程序去特意記錄,而由數據庫獲取當前時間自動記錄修改時間。
在數據庫中獲取當前時間
-
oracle:select sysdate from dual;
-
sqlserver:select getdate();
-
mysql:select sysdate();
select now();
MySQL中時間函數NOW()和SYSDATE()的區別
NOW()取的是語句開始執行的時間,SYSDATE()取的是動態的實時時間。
因為NOW()取自mysql的一個變量”TIMESTAMP”,而這個變量在語句開始執行的時候就設定好了,因此在整個語句執行過程中都不會變化。
執行下面這個例子就明白了:
SELECT NOW(),SYSDATE(),SLEEP(3),NOW(),SYSDATE()
先查詢了NOW()和SYSDATE(),然后sleep了3秒,再查詢NOW()和SYSDATE(),結果如下:
實現方式
-
將字段類型設為 TIMESTAMP。
-
將默認值設為 CURRENT_TIMESTAMP。
舉例應用
創建一個表time,主鍵為id,其中一個字段為date,默認系統當前時間:
CREATE TABLE time(
id INT PRIMARY KEY,
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
插入一條數據:
INSERT INTO time(id) VALUES(1);
查詢結果: