NOW() 函数用来返回当前日期和时间值,格式为 “YYYY-MM-DD HH:MM:SS” 或“YYYYMMDDHHMMSS”,具体格式根据函数用在字符串或数字语境中而定。
注意:NOW() 取的是 SQL 语句开始执行的时间,而不是语句执行过程中动态的实时时间。
(1)将 NOW() 函数用于字符串语境,将返回格式为 “YYYY-MM-DD HH:MM:SS” 的字符串,如下:
mysql> select CONCAT('NOW() = ', NOW()); +-----------------------------+ | CONCAT('NOW() = ', NOW()) | +-----------------------------+ | NOW() = 2022-04-26 11:57:44 | +-----------------------------+ 1 row in set (0.02 sec)
(2)将 NOW() 函数用于数字语境,将返回格式为 “YYYYMMDDHHMMSS” 数字,如下:
mysql> select NOW()+0; +----------------+ | NOW()+0 | +----------------+ | 20220426115844 | +----------------+ 1 row in set (0.02 sec)
(3)与 NOW() 函数相同功能的还有 SYSDATE() 函数,他也是返回当前日期和时间值。但是有一些细微的差异,NOW() 取的是语句开始执行的时间,而 SYSDATE() 取的是语句执行过程中动态的实时时间。
假如我们先查询了 NOW() 和 SYSDATE(),然后 SLEEP(休眠)了 3 秒,再查询 NOW() 和 SYSDATE(),如下:
mysql> select NOW(),SYSDATE(),SLEEP(3),NOW(),SYSDATE(); +---------------------+---------------------+----------+---------------------+---------------------+ | NOW() | SYSDATE() | SLEEP(3) | NOW() | SYSDATE() | +---------------------+---------------------+----------+---------------------+---------------------+ | 2022-04-26 12:01:40 | 2022-04-26 12:01:40 | 0 | 2022-04-26 12:01:40 | 2022-04-26 12:01:43 | +---------------------+---------------------+----------+---------------------+---------------------+ 1 row in set (3.04 sec)
由运行结果可以看出,NOW() 函数始终获取的是 SQL 语句开始执行的时间,而 SYSDATE() 函数则是动态获取的实时时间。