【问题标题】:Difference between NOW(), SYSDATE() & CURRENT_DATE() in MySQLMySQL 中 NOW()、SYSDATE() 和 CURRENT_DATE() 之间的区别
【发布时间】:2014-07-31 00:35:43
【问题描述】:

NOW()SYSDATE()CURRENT_DATE()在MySQL中的区别以及在实际场景中可以使用的地方。

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

【问题讨论】:

    标签: mysql database datetime


    【解决方案1】:

    Current_date() 只会给你日期。
    now() 为您提供声明、程序等开始的日期时间。
    sysdate() 为您提供当前日期时间。
    使用以下查询(向右滚动)查看 now()1 sysdate()1 之间等待 5 秒后的秒数:

    选择 now(),sysdate(),current_date(),sleep(5),now(),sysdate(); - 会给 -- now() sysdate() current_date() sleep(5) now()1 sysdate()1 -- 2014 年 6 月 10 日上午 2:50:04 2014 年 6 月 10 日上午 2:50:04 2014 年 6 月 10 日上午 12:00:00 0 2014 年 6 月 10 日凌晨 2:50:04 2014 年 6 月 10 日上午 2:50:09 上午

    【讨论】:

    • 您好,这里说的是真的。然而,一个精度:“sysdate_is_now”选项改变了这种行为。启用后,“SYSDATE”严格等同于 MySql 关键字“NOW”。见dev.mysql.com/doc/refman/5.7/en/…
    【解决方案2】:

    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 |
    +---------------------+----------+---------------------+
    

    【讨论】:

      【解决方案3】:

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

      我现在不知道(),抱歉 :-)

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            NOW() 返回一个常数时间,指示语句开始执行的时间,而 SYSDATE () 返回它执行的时间...或者换句话说,NOW () 显示查询执行时间和 SYSDATE()显示自我执行时间..

            【讨论】:

              猜你喜欢
              • 2012-04-14
              • 1970-01-01
              • 1970-01-01
              • 2013-01-28
              • 1970-01-01
              • 2019-08-15
              • 1970-01-01
              • 2011-07-26
              • 1970-01-01
              相关资源
              最近更新 更多