运行 UPDATE ... datetime = NOW(); 时,mysql 中更新的所有行是否具有相同的日期/时间?
mysqlmysqli database
now() 函数返回显示任何语句开始执行时间的常量时间。sysdate() 函数返回与从 MySQL 5.0.13 执行语句时完全相同的日期时间。
假设您在触发器或存储过程中使用 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: 00
使用 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)