zoukankan      html  css  js  c++  java
  • now()与sysdate()的区别(1)

     
     
    now()与sysdate()两个函数都以'YYYY-MM-DD HH:MM:SS'的形式表示表示当前的时间。比如:
    root@rac1 21:13:10> select sysdate();                   
    +---------------------+
    | sysdate()           |
    +---------------------+
    | 2013-01-12 21:14:21 |
    +---------------------+
    1 row in set (0.00 sec)
     
    root@rac1 21:14:21> select now();    
    +---------------------+
    | now()               |
    +---------------------+
    | 2013-01-12 21:14:29 |
    +---------------------+
    1 row in set (0.00 sec)
    两者的区别在于对于一个语句中调用多个函数
    NOW()     返回语句调用时的值,在存过或者trigger 中now()返回的值是存过或者trigger 执行的时刻的时间。
    SYSDATE() 返回调用该函数的时刻的时间值。
    举例说明两者之间的区别:
    root@rac1 21:07:16> select now(),sleep(3),now(); -返回的时间是一致的。  
    +---------------------+----------+---------------------+
    | now()               | sleep(3) | now()               |
    +---------------------+----------+---------------------+
    | 2013-01-12 21:07:30 |        0 | 2013-01-12 21:07:30 |
    +---------------------+----------+---------------------+
    1 row in set (3.00 sec)
     
    root@rac1 21:10:23> select sysdate(),sleep(2),sysdate();       
    +---------------------+----------+---------------------+
    | sysdate()           | sleep(2) | sysdate()           |
    +---------------------+----------+---------------------+
    | 2013-01-12 21:11:06 |        0 | 2013-01-12 21:11:08 |
    +---------------------+----------+---------------------+
    上述查询返回sysdate()函数被调用的时刻的时间值。
    还有另外一个时间相关的函数current_timestamp() 与now()一致。
    root@rac1 21:07:33> select now(),current_timestamp(),sysdate();
    +---------------------+---------------------+---------------------+
    | now()               | current_timestamp() | sysdate()           |
    +---------------------+---------------------+---------------------+
    | 2013-01-12 21:09:59 | 2013-01-12 21:09:59 | 2013-01-12 21:09:59 |
    +---------------------+---------------------+---------------------+
    1 row in set (0.00 sec)
    root@rac1 21:10:08> select now(),sleep(2),current_timestamp(); 
    +---------------------+----------+---------------------+
    | now()               | sleep(2) | current_timestamp() |
    +---------------------+----------+---------------------+
    | 2013-01-12 21:10:21 |        0 | 2013-01-12 21:10:21 |
    +---------------------+----------+---------------------+
    1 row in set (2.00 sec)
     
    当sysdate函数在基于satement 模式的主从环境下可能造成数据的不一致。因为语句在主库中执行到日志传递到备库,存在时间差,到备库执行的时候就会变成不同的时间值。
    解决方法:
    1 通过设置sysdate-is-now参数,使mysql对于sysdate调用采用和now一样的行为,配置该参数的时候要在主备同事配置。
    2 采取row模式的复制环境。
    参考资料:
     
     
  • 相关阅读:
    html基础知识点
    uni-app之tabBar的自己配置
    uni-app之导航配置pages.json
    js获取链接?后边的参数名称或者值
    验证码输入自动聚焦下一个input或者删除自动聚焦上一个input
    VUE中/deep/深度作用域
    vue环境下新建项目
    vue中展示数据
    VUE环境项目搭建以及简单的运行例子
    ios设置音乐audio自动播放
  • 原文地址:https://www.cnblogs.com/liang545621/p/7518422.html
Copyright © 2011-2022 走看看