在 MySQL 中,執行 UPDATE … datetime = NOW(); 語句時,所有更新的行都會具有相同的日期/時間嗎?
now() 函式返回一個常量時間,表示任何語句開始執行的時間。從 MySQL 5.0.13 開始,sysdate() 函式返回執行語句時的完全相同的日期時間。
假設您在觸發器或儲存過程中使用 now() 更新 datetime,則 now() 方法將返回觸發器和儲存過程開始執行的時間。
以下是使用 now() 更新的演示。讓我們先建立一個表。建立表的查詢如下:
mysql> create table NowDemo -> ( -> DueDateTime datetime -> ); Query OK, 0 rows affected (0.51 sec)
使用 insert 命令在表中插入記錄。查詢如下:
mysql> insert into NowDemo values('2018-12-19');
Query OK, 1 row affected (0.15 sec)
mysql> insert into NowDemo values('2018-11-10');
Query OK, 1 row affected (0.20 sec)
mysql> insert into NowDemo values('2017-11-21');
Query OK, 1 row affected (0.09 sec)使用 select 語句檢查表中的所有記錄。查詢如下:
mysql> select *from NowDemo;
輸出
+---------------------+ | DueDateTime | +---------------------+ | 2018-12-19 00:00:00 | | 2018-11-10 00:00:00 | | 2017-11-21 00:00:00 | +---------------------+ 3 rows in set (0.00 sec)
以下是如何使用 now() 更新 datetime 列的查詢,它會更新所有值。
案例 1 - 使用 now()
查詢如下:
mysql> update NowDemo set DueDateTime = now(); Query OK, 3 rows affected (0.12 sec) Rows matched: 3 Changed: 3 Warnings: 0
使用 select 命令檢查更新後的值。查詢如下:
mysql> select *from NowDemo;
以下是輸出,顯示所有行現在都具有相同的日期時間:
+---------------------+ | DueDateTime | +---------------------+ | 2018-12-20 16:10:00 | | 2018-12-20 16:10:00 | | 2018-12-20 16:10:00 | +---------------------+ 3 rows in set (0.00 sec)
案例 2 - 使用 sysdate()
查詢如下:
mysql> update NowDemo set DueDateTime = sysdate(); Query OK, 3 rows affected (0.43 sec) Rows matched: 3 Changed: 3 Warnings: 0
使用 select 語句檢查表中的更新後的值。查詢如下:
mysql> select *from NowDemo;
以下是輸出,顯示所有行現在都具有相同的日期時間:
+---------------------+ | DueDateTime | +---------------------+ | 2018-12-20 16:10:35 | | 2018-12-20 16:10:35 | | 2018-12-20 16:10:35 | +---------------------+ 3 rows in set (0.00 sec)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP