MySQL中的时间函数Now和SYSDate有什么区别?

552 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在MySQL使用中,总要用到一些时间函数,其中就有now和sysdate,用来代表当前时间。

但是随着开发的深入,就要去多了解一些了,要判断在哪些场景去使用哪一种时间函数。

now函数是代表SQL语句开始执行的时间,sysdate函数则是代表SQL执行时的动态实时时间。

如果在sql中使用sleep函数来睡眠几秒的话,就能看得出来,now函数其实前后两次的执行结果是完全一样的。

但是sysdate函数前后两次得到的时间却是不同的。

可通过select now(), sleep(3), now(); 来查询出now函数获取的当前时间是否受sleep函数影响。

image.png

此SQL的结果获取的当前时间是一样的,因为now函数是在SQL开始执行之前就已经获取到了,所以无论在SQL执行期间停顿几秒都不会影响的。

也可以通过select sysdate(), sleep(3), sysdate(); 来查询出sysdate函数获取的当前时间是否受sleep函数影响。

image.png

此SQL的结果就不同了,如果你执行一些了上述SQL,便会得到上图中的结果了。

很明显,前后的时间差别了3秒,这就说明了,sysdate其实是获取的当前SQL执行时候的动态时间。

每天记录一下自己上班需要百度的问题,永远相信美好的事情即将发生。