MariaDB 中 SYSDATE() 和 NOW() 之间的区别

发布于

在 MariaDB 中,和 函数的相似之处在于它们返回当前日期和时间。SYSDATE()NOW()

但是,有一个重要的区别:返回它执行的时间,而返回语句开始执行的时间。SYSDATE()``NOW()

在存储过程或触发器中运行时,将返回其执行时间,而将返回存储过程或触发器开始执行的时间。SYSDATE()``NOW()

示例

首先,让我们看看这两个函数如何产生不同的结果。

SELECT 
    NOW(),
    SYSDATE(),
    SLEEP(5),
    NOW(),
    SYSDATE();

结果(使用垂直输出):

NOW(): 2021-05-27 09:22:08

SYSDATE(): 2021-05-27 09:22:08 SLEEP(5): 0 NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:13

在这里,我们使用函数在第二批函数调用之前暂停处理五秒钟。SLEEP()

我们可以看到第二次被调用,它的返回值与第一次不同。 另一方面,两次都返回相同的值。SYSDATE()``NOW()

其他注意事项

使用这两个函数,还有其他一些注意事项:

  • SET TIMESTAMP不影响 ,但_会影响_函数。SYSDATE()``NOW()
  • SYSDATE()如果使用基于语句的二进制日志记录,则复制不安全。但是,如果需要,有一些方法可以解决这个问题。您可以使用命令是别名的非默认选项,以使其可以安全地进行复制。有关更多信息,请参阅 SYSDATE() 的 MariaDB 文档。--sysdate-is-now``SYSDATE()``NOW()