天天看點

mysql now() sysdate() curdate()差別

//mysql中now,curdate,curtime,sysdate差別

1.now 傳回的時間,格式如下:2013-01-17 10:57:13

mysql> select now(),sleep(5),now();

+---------------------+----------+---------------------+

| now()               | sleep(5) | now()               |

+---------------------+----------+---------------------+

| 2013-01-17 10:57:13 |        0 | 2013-01-17 10:57:13 |

+---------------------+----------+---------------------+

1 row in set (5.01 sec)

其傳回的兩個值是一樣的,因為都是表示語句開始執行的時間。

2. curdate,傳回時間的日期,格式如下:2013-01-17

mysql> select curdate(),sleep(5),curdate();

+------------+----------+------------+

| curdate()  | sleep(5) | curdate()  |

+------------+----------+------------+

| 2013-01-17 |        0 | 2013-01-17 |

+------------+----------+------------+

1 row in set (5.00 sec)

3.curtime, 傳回時間,格式如下:12:49:26

mysql> select curtime(),sleep(5),curtime();

+-----------+----------+-----------+

| curtime() | sleep(5) | curtime() |

+-----------+----------+-----------+

| 12:49:26  |        0 | 12:49:26  |

+-----------+----------+-----------+

其傳回的兩個值是一樣的,因為都是表示語句開始執行的時間。

4.sysdate 傳回時間,格式和time()函數傳回時間一樣,但是有差別。格式:2013-01-17 13:02:40

mysql> select sysdate(),sleep(5),sysdate();

+---------------------+----------+---------------------+

| sysdate()           | sleep(5) | sysdate()           |

+---------------------+----------+---------------------+

| 2013-01-17 13:02:40 |        0 | 2013-01-17 13:02:45 |

+---------------------+----------+---------------------+

其傳回的兩個值是不一樣的,因為sysdate是檢視的系統時間,時時的系統時間。

也正因為有這個差別,我們一般在執行語句的時候,都是用now(),因為sysdate()擷取當時

實時的時間,這有可能導緻主庫和從庫執行時傳回值不一樣,導緻主從資料庫不一緻。

差別:除了本身定義所傳回的差別以為,另外一個差別是:now(),curtime(),curdate()

      都是傳回基于語句的開始執行時間,而sysdate()傳回time的值。

其它函數格式顯示:

mysql> select now(),curdate(),sysdate(),curtime()\G;

*************************** 1. row ***************************

    now(): 2013-01-17 13:07:53

curdate(): 2013-01-17

sysdate(): 2013-01-17 13:07:53

curtime(): 13:07:53

1 row in set (0.01 sec)

轉載于:https://www.cnblogs.com/hllnj2008/p/5192849.html