【发布时间】:2014-07-31 00:35:43
【问题描述】:
NOW()、SYSDATE()、CURRENT_DATE()在MySQL中的区别以及在实际场景中可以使用的地方。
我尝试NOW(),SYSDATE(),Current_Date() 当我向表中插入数据并且列数据类型为TIMESTAMP 时,都给出了相同的日期和时间。
【问题讨论】:
NOW()、SYSDATE()、CURRENT_DATE()在MySQL中的区别以及在实际场景中可以使用的地方。
我尝试NOW(),SYSDATE(),Current_Date() 当我向表中插入数据并且列数据类型为TIMESTAMP 时,都给出了相同的日期和时间。
【问题讨论】:
Current_date() 只会给你日期。
now() 为您提供声明、程序等开始的日期时间。
sysdate() 为您提供当前日期时间。
使用以下查询(向右滚动)查看 now()1 sysdate()1 之间等待 5 秒后的秒数:
【讨论】:
NOW() 返回一个常数时间,指示语句开始执行的时间。 (在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。)这与 SYSDATE() 的行为不同,SYSDATE() 返回其执行的确切时间。
mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW() | SLEEP(2) | NOW() |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |
+---------------------+----------+---------------------+
mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE() | SLEEP(2) | SYSDATE() |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |
+---------------------+----------+---------------------+
【讨论】:
Current_date 返回客户端的时间戳,而 sysdate 返回服务器的时间戳。如果服务器和客户端都在同一台机器上,那么两个命令的结果是相同的。但是如果你的服务器在美国,而你的客户在中国,那么这两个函数返回的结果完全不同。
我现在不知道(),抱歉 :-)
【讨论】:
CURRENT_DATE() 是许多其他类似函数的同义词,所有这些函数都只提供日期。
NOW() 和 SYSDATE() 之间存在细微差别,您可以在此
official MySQL website 页面上了解更多信息。
【讨论】:
sysdate() 和now() 之间的主要区别之一最近在背后咬了我一口。这是他们执行的时间点和频率的差异。 sysdate()每次在同一语句中进行评估——即,在它适用的每一行中。但now() 只会被评估一次,即在查询执行开始时。
当只有几行时,这种差异并不明显。但是当有数百万行时,它非常重要。例如,在 RHEL7 中,sysdate() 显然进行了昂贵的系统调用,因此当有数百万行时,使用 sysdate() 需要一个多小时,但在完全相同的语句中使用 now() 只需要几秒钟!
这是在精度问题之上,因为sysdate() 将返回不同的值,例如,在时间 t 和时间 t+50 毫秒之间。
关于curdate(),我也想知道它与now() 或sysdate() 有何不同。 MySQL 参考说,关于它执行的时间和次数,curdate() 的行为类似于now()。
参考:MySQL 5.7 Reference - Date and Time Functions -- 以上所有内容都在此页面中进行了描述。但是,它分散在页面上,因此您必须通读概述部分以及每个函数的参考。
【讨论】:
NOW() 返回一个常数时间,指示语句开始执行的时间,而 SYSDATE () 返回它执行的时间...或者换句话说,NOW () 显示查询执行时间和 SYSDATE()显示自我执行时间..
【讨论】: