MySQL中SYSDATE和NOW的区别
2个回答
展开全部
MySQL中有5个函数需要计算当前时间的值:
NOW.返回时间,格式如:2012-09-23 06:48:28
CURDATE,返回时间的日期,格式如:2012-09-23
CURTIME,返回时间,格式如:06:48:28
UNIX_TIMESTAMP,返回时间整数戳,如:1348408108
SYSDATE,返回时间,格式和time()函数返回时间一样,但是有区别。
除了本身定义所返回的区别以外,另一个区别是:前四个函数都是返回基于语句的开始执行时间,而SYSDATE返回time的值。
通过比较,可以发现这两个函数的区别:
NOW()执行如下:
mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
+---------------------+----------+---------------------+
| 2012-09-23 06:54:29 | 0 | 2012-09-23 06:54:29 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec)
其返回的两个值是一样的,因为都是表示语句开始执行的时间。
SYSDATE执行如下:
mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(2) | sysdate() |
+---------------------+----------+---------------------+
| 2012-09-23 06:55:00 | 0 | 2012-09-23 06:55:02 |
+---------------------+----------+---------------------+
1 row in set (2.01 sec)
也正因为有这个区别,我们一般在执行语句的时候,都是用NOW(),因为SYSDATE获取当时实时的时间,这有可能导致主库和从库是执行的返回值是不一样的,导致主从数据不一致。
其上其它函数执行如下:
mysql> select now(),sysdate(),curdate(),curtime(),unix_timestamp()\G;
*************************** 1. row ***************************
now(): 2012-09-23 07:00:05
sysdate(): 2012-09-23 07:00:05
curdate(): 2012-09-23
curtime(): 07:00:05
unix_timestamp(): 1348408805
1 row in set (0.00 sec)
NOW.返回时间,格式如:2012-09-23 06:48:28
CURDATE,返回时间的日期,格式如:2012-09-23
CURTIME,返回时间,格式如:06:48:28
UNIX_TIMESTAMP,返回时间整数戳,如:1348408108
SYSDATE,返回时间,格式和time()函数返回时间一样,但是有区别。
除了本身定义所返回的区别以外,另一个区别是:前四个函数都是返回基于语句的开始执行时间,而SYSDATE返回time的值。
通过比较,可以发现这两个函数的区别:
NOW()执行如下:
mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
+---------------------+----------+---------------------+
| 2012-09-23 06:54:29 | 0 | 2012-09-23 06:54:29 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec)
其返回的两个值是一样的,因为都是表示语句开始执行的时间。
SYSDATE执行如下:
mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(2) | sysdate() |
+---------------------+----------+---------------------+
| 2012-09-23 06:55:00 | 0 | 2012-09-23 06:55:02 |
+---------------------+----------+---------------------+
1 row in set (2.01 sec)
也正因为有这个区别,我们一般在执行语句的时候,都是用NOW(),因为SYSDATE获取当时实时的时间,这有可能导致主库和从库是执行的返回值是不一样的,导致主从数据不一致。
其上其它函数执行如下:
mysql> select now(),sysdate(),curdate(),curtime(),unix_timestamp()\G;
*************************** 1. row ***************************
now(): 2012-09-23 07:00:05
sysdate(): 2012-09-23 07:00:05
curdate(): 2012-09-23
curtime(): 07:00:05
unix_timestamp(): 1348408805
1 row in set (0.00 sec)
2016-09-12 · 知道合伙人软件行家
关注
展开全部
MySQL获得当前日期+时间(date + time)函数sysdate() :
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
如下实例:
mysql> select now(), sleep(3), now();
+---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+---------------------+----------+---------------------+
| 2015-04-12 16:00:00 | 0 | 2015-04-12 16:00:00 |
+---------------------+----------+---------------------+
mysql> select sysdate(), sleep(3), sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2015-04-12 16:01:16 | 0 | 2015-04-12 16:01:19 |
+---------------------+----------+---------------------+
可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。
sysdate() 日期时间函数,一般情况下很少用到。
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
如下实例:
mysql> select now(), sleep(3), now();
+---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+---------------------+----------+---------------------+
| 2015-04-12 16:00:00 | 0 | 2015-04-12 16:00:00 |
+---------------------+----------+---------------------+
mysql> select sysdate(), sleep(3), sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2015-04-12 16:01:16 | 0 | 2015-04-12 16:01:19 |
+---------------------+----------+---------------------+
可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。
sysdate() 日期时间函数,一般情况下很少用到。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询