MySQL 中 CURDATE() 和 CURRENT_DATE()
MySQL 中 CURDATE() 和 CURRENT_DATE() 函数的作用相同,将当前日期按照“YYYY-MM-DD”或“YYYYMMDD”格式的值返回,具体格式根据函数用在字符串或数字语境中而定。
【实例1】使用日期函数 CURDATE 和 CURRENT_DATE 获取系统当前日期,输入的 SQL 语句和执行结果如下所示。
mysql> SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE()+0; +------------+----------------+------------------+ | CURDATE() | CURRENT_DATE() | CURRENT_DATE()+0 | +------------+----------------+------------------+ | 2020-10-13 | 2020-10-13 | 20201013 | +------------+----------------+------------------+ 1 row in set (0.03 sec)
由运行结果可以看到,两个函数的作用相同,返回了相同的系统当前日期,“CURDATE()+0”将当前日期值转换为数值型的。
MySQL中 NOW() 和 SYSDATE()
MySQL中 NOW() 和 SYSDATE() 函数的作用相同,都是返回当前日期和时间值,格式为“YYYY-MM-DD HH:MM:SS”或“YYYYMMDDHHMMSS”,具体格式根据函数用在字符串或数字语境中而定。
【实例2】使用日期时间函数 NOW 和 SYSDATE 获取当前系统的日期和时间,输入的 SQL 语句和执行结果如下所示。
mysql> SELECT NOW(),SYSDATE(); +---------------------+---------------------+ | NOW() | SYSDATE() | +---------------------+---------------------+ | 2017-04-01 19:36:52 | 2017-04-01 19:36:52 | +---------------------+---------------------+ 1 row in set (0.04 sec)
由运行结果可以看到,NOW 函数和 SYSDATE 函数返回的结果是相同的。
虽然在 MySQL 中 NOW() 和 SYSDATE() 都表示当前时间,但是 NOW() 取的是语句开始执行的时间,而 SYSDATE() 取的是语句执行过程中动态的实时时间。
【实例3】先查询了 NOW() 和 SYSDATE(),然后 sleep 了 3 秒,再查询 NOW() 和 SYSDATE(),结果如下:
mysql> select now(),sysdate(),sleep(3),now(),sysdate(); +-----------------------+------------------------+-------------+-----------------------+---------------------+ | now() | sysdate() | sleep(3) | now() | sysdate() | +-----------------------+------------------------+-------------+------------------- ---+---------------------+ | 2019-02-27 10:59:39 | 2019-02-27 10:59:39 | 0 | 2019-02-27 10:59:39 | 2019-02-27 10:59:42 | +-----------------------+------------------------+-------------+-----------------------+---------------------+ 1 row in set (3.00 sec)
由运行结果可以看出,NOW() 函数始终获取的是 SQL 语句开始执行的时间,而 SYSDATE() 函数则是动态获取的实时时间。