NOW(),SYSDATE()& MySQL中的CURRENT_DATE()

时间:2014-06-10 09:42:31

标签: mysql database datetime

MySQL中NOW()SYSDATE()CURRENT_DATE()与真实场景中可用的位置有何不同。

当我将数据插入表格并且列数据类型为NOW()时,我尝试了SYSDATE()Current_Date()TIMESTAMP所有的日期和时间都相同。

6 个答案:

答案 0 :(得分:40)

Current_date()只会给你日期 now()在语句,程序等开始时给你日期时间 sysdate()为您提供当前日期时间 查看now()1 sysdate()1之间等待5秒后的秒数,并带有以下查询(向右滚动):

select now(),sysdate(),current_date(),sleep(5),now(),sysdate();

-- will give
-- now()    sysdate()   current_date()  sleep(5)    now()1  sysdate()1
-- 6/10/2014 2:50:04 AM 6/10/2014 2:50:04 AM    6/10/2014 12:00:00 AM   0   6/10/2014 2:50:04 AM 6/10/2014 2:50:09 AM

答案 1 :(得分:7)

NOW()返回一个常量时间,指示语句开始执行的时间。 (在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。)这与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 |
+---------------------+----------+---------------------+

答案 2 :(得分:3)

当sysdate返回服务器的时间戳时,Current_date返回客户端的时间戳。如果服务器和客户端都在同一台机器上,那么两个命令的结果是相同的。但是,如果你的服务器是在美国,而你的客户在中国,那么这两个函数会返回完全不同的结果。

我不知道thew now(),对不起: - )

答案 3 :(得分:1)

CURRENT_DATE()是许多其他类似功能的同义词,所有这些功能都只提供日期NOW()SYSDATE()之间存在细微差别,您可以在此official MySQL website页面上详细了解。

答案 4 :(得分:1)

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 -- 以上所有内容都在此页面中进行了描述。但是,它分散在页面上,因此您必须通读概述部分以及每个功能的参考。

答案 5 :(得分:-1)

NOW()返回一个常量时间,表示语句开始exicute的时间,而SYSDATE()返回它exicute的时间...或者换句话说NOW()显示查询exicution时间和SYSDATE()显示自我提取时间..