MySQL日期与时间函数
MySQL服务器中的三种时区设置:
①系统时区—保存在系统变量system_time_zone
②服务器时区—保存在全局系统变量global.time_zone
③每个客户端连接的时区—保存在会话变量session.time_zone
注意:
客户端时区的设置会影响一些日期函数返回值的显示,例如:now()、curtime()、curdate(),也影响timestamp列值的显示。
默认情况下,客户端和服务器的时区相同,其值为SYSTEM,表示使用系统时区。
mysql> select @@global.time_zone,@@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
row in set (0.00 sec)
mysql> show variables like 'system_time_zone';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| system_time_zone | CST |
+------------------+-------+
row in set (0.28 sec)
1、NOW([fsp])
返回服务器的当前日期和时间(fsp指定小数秒的精度,取值0–6)
格式:‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’
//now()的显示格式是‘YYYY-MM-DD HH:MM:SS’
//now()+0的显示格式是‘YYYYMMDDHHMMSS’
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2017-03-24 13:53:34 |
+---------------------+
mysql> select now()+0;
+----------------+
| now()+0 |
+----------------+
| 20170324135428 |
+----------------+
mysql> select now(6); //指定小数秒的精度
+----------------------------+
| now(6) |
+----------------------------+
| 2017-04-19 19:55:46.658198 |
+----------------------------+
注意:
SYSDATE( ):返回服务器的当前日期和时间
与now的不同点:(一般使用NOW而不用SYSDATE)
①SYSDATE()返回的是函数执行时的时间
②now()返回的是语句执行时的时间
mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
+---------------------+----------+---------------------+
| 2017-04-19 20:01:39 | 0 | 2017-04-19 20:01:39 |
+---------------------+----------+---------------------+
row in set (2.00 sec)
mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(2) | sysdate() |
+---------------------+----------+---------------------+
| 2017-04-19 20:02:01 | 0 | 2017-04-19 20:02:03 |
+---------------------+----------+---------------------+
row in set (2.05 sec)
2、CURTIME([fsp]):返回当前时间,只包含时分秒(fsp指定小数秒的精度,取值0–6)
格式:‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’
mysql> select curtime(),curtime(2);
+-----------+-------------+
| curtime() | curtime(2) |
+-----------+-------------+