MySQL中有5个函数须要计算当前时间的值:now(),sysdate(),curdate(),curtime(),unix_timestamp(); now()和sysdate()都是返回当前时间(形如 yyyy-mm-dd hh:mm:ss); curdate()返回当前时间的日期(形如 yyyy-mm-dd); curtime()返回当前时间(形如 hh:mm:ss) unix_timestam()返回当前时间的时间戳(形如 1464326059)sql
下面的sql是测试语句:函数
select now(),sysdate(),curdate(),curtime(),unix_timestamp();
下面是执行结果: 测试
sysdate()和其余4个函数都是返回当前时间的相关信息,除了自己定义所返回的区别之外,sysdate()是返回执行这个函数的时间,其余4个函数返回语句开始执行时间。unix
sysdate()和now()返回格式相同,拿它们2个作比较体验一下上述说的区别: 下面是sql的测试语句:code
select now(),sleep(2),now(); select sysdate(),sleep(2),sysdate();
下面是执行结果: 图片
能够发现now()2个时间是相同的,由于都是取的开始执行sql的时间; 而sysdate()的2个时间不一样,由于取的是执行这个函数的时间,2个函数之间sleep了2秒,因此也就相差2秒了。it
也正由于有这个区别,咱们通常在执行语句的时候,都是用NOW(),由于SYSDATE获取当时实时的时间,这有可能致使主库和从库是执行的返回值是不同的,致使主从数据不一致。date