分享mysql中 now() sysdate() curdate() 的区别
问题:请问mysql里面时间函数now() sysdate() curdate() 有什么区别?
答案:值不一样,具体看查询结果
mysql> select now(), sleep(5), now();
+---------------------+----------+---------------------+
| now() | sleep(5) | now() |
+---------------------+----------+---------------------+
| 2023-01-17 10:57:13 | 0 | 2023-01-17 10:57:13 |
+---------------------+----------+---------------------+
两个值相同,表示语句开始执行的时间。
2,curdate() 返回当前日期,格式如下:2023-01-17
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2023-01-17 |
+------------+
3,curtime(), 返回当前时间,格式如下:12:49:26
mysql> select curtime(), sleep(5), curtime();
+-----------+----------+-----------+
| curtime() | sleep(5) | curtime() |
+-----------+----------+-----------+
| 12:49:26 | 0 | 12:49:26 |
+-----------+----------+-----------+
两个值相同,都表示语句开始执行的时间。
4,sysdate() 返回当前日期和时间,格式:2023-01-17 13:02:40
mysql> select sysdate(), sleep(5), sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(5) | sysdate() |
+---------------------+----------+---------------------+
| 2023-01-17 13:02:40 | 0 | 2023-01-17 13:02:45 |
+---------------------+----------+---------------------+
两个值不同,sysdate表示实时的系统时间。
sysdate() 和 now()的区别,一般在执行SQL语句时,都是用now();
因为使用sysdate()时,有可能导致主库和从库执行时返回值不一样,导致主从数据库不一致。
其它函数格式显示:
mysql> select now(), curdate(), sysdate(), curtime() \G;
*************************** 1. row ***********************
now(): 2023-01-17 13:07:53
curdate(): 2023-01-17
sysdate(): 2023-01-17 13:07:53
curtime(): 13:07:53