MySQL中NOW()
,SYSDATE()
,CURRENT_DATE()
与真实场景中可用的位置有何不同。
当我将数据插入表格并且列数据类型为NOW()
时,我尝试了SYSDATE()
,Current_Date()
,TIMESTAMP
所有的日期和时间都相同。
答案 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()显示自我提取时间..