mysql 时间和日期函数学习

为了方便使用了比较智能的mysql客户端工具mycli,关于这个工具的介绍可以在另一篇文章(http://watchman110.blog.51cto.com/9194028/1687953)里了解!

1,now()函数,获得当前日期和时间

mysql root@localhost:(none)> SELECT NOW()
+---------------------+
| NOW()       |
|---------------------|
|2015-08-25 10:47:54 |
+---------------------+

2,sysdate()函数,获得当前日期和时间

mysql root@localhost:(none)> SELECT SYSDATE()
+---------------------+
| SYSDATE()     |
|---------------------|
|2015-08-25 10:49:43 |
+---------------------+

now()函数,和sysdate()函数作用类似,区别如下:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值

mysql root@localhost:(none)> SELECT NOW(),sleep(2),NOW()
+---------------------+------------+---------------------+
| NOW()          |   sleep(2) | NOW()  |
|---------------------+------------+---------------------|
| 2015-08-25 10:51:18 |       0 | 2015-08-25 10:51:18 |
+---------------------+------------+---------------------+
mysql root@localhost:(none)> SELECT SYSDATE(),sleep(2),SYSDATE()
+---------------------+------------+---------------------+
| SYSDATE()       |   sleep(2) | SYSDATE() |
|---------------------+------------+---------------------|
| 2015-08-25 10:52:01 |       0 | 2015-08-25 10:52:03 |
+---------------------+------------+---------------------+

3,current_time(),curtime()函数,获得当前时间的函数

mysql root@localhost:(none)> SELECT CURRENT_TIME()
+------------------+
| CURRENT_TIME()  |
|------------------|
| 10:57:47      |
+------------------+
mysql root@localhost:(none)> SELECT CURTIME()
+-------------+
| CURTIME()  |
|-------------|
| 10:57:55   |
+-------------+

4,current_date(),curdate()函数,获得当前日期的函数

mysql root@localhost:(none)> SELECT CURRENT_DATE()
+------------------+
| CURRENT_DATE()  |
|------------------|
| 2015-08-25     |
+------------------+
mysql root@localhost:(none)> SELECT CURDATE()
+-------------+
| CURDATE()  |
|-------------|
| 2015-08-25 |
+-------------+

5,current_timestamp()函数,获得当前时间戳的函数

mysql root@localhost:(none)> SELECT CURRENT_TIMESTAMP()
+-----------------------+
| CURRENT_TIMESTAMP()  |
|-----------------------|
| 2015-08-25 11:00:21  |
+-----------------------+

6,date_format(date,format)函数,日期格式转换函数,将日期转化为字符串形式

mysql root@localhost:(none)> SELECT curdate(),DATE_FORMAT(curdate(),'%Y%m%d');
+-------------+-----------------------------------+
| curdate()   |   DATE_FORMAT(curdate(),'%Y%m%d') |
|-------------+-----------------------------------|
| 2015-08-25  |                          20150825 |
+-------------+-----------------------------------+

7,time_format(time,format)函数,时间转换函数,将时间转化为字符串形式

mysql root@localhost:(none)> SELECT curtime(),time_format(curtime(),'%H%i%s')
+-------------+-----------------------------------+
| curtime()   |   time_format(curtime(),'%H%i%s')|
|-------------+----------------------------------- |
| 11:15:17    |                 111517  |
+-------------+-----------------------------------+

上面函数的逆函数str_to_date()函数

mysql root@localhost:(none)> SELECT str_to_date('20150311','%Y%m%d')
+------------------------------------+
| str_to_date('20150311','%Y%m%d')  | 
|------------------------------------|
| 2015-03-11                 |
+------------------------------------+
mysql root@localhost:(none)> SELECT str_to_date('121409','%H%i%s')
+----------------------------------+
| str_to_date('121409','%H%i%s')   |
|----------------------------------|
| 12:14:09                         |
+----------------------------------+
mysql root@localhost:(none)> SELECT str_to_date('20150903120000','%Y%m%d%H%i%s')
+------------------------------------------------+
| str_to_date('20150903120000','%Y%m%d%H%i%s')   |
|------------------------------------------------|
| 2015-09-03 12:00:00                            |
+------------------------------------------------+

8,unix_timestamp()函数,将时间转化为时间戳的函数

mysql root@localhost:(none)> SELECT unix_timestamp()
+--------------------+
|  unix_timestamp() |
|--------------------|
|      1440474909 |
+--------------------+
mysql root@localhost:(none)> SELECT unix_timestamp('2015-09-03')
+--------------------------------+
|   unix_timestamp('2015-09-03') |
|--------------------------------|
|                     1441209600 |
+--------------------------------+
mysql root@localhost:(none)> SELECT unix_timestamp('2015-09-03 01:00:00')
+-----------------------------------------+
|   unix_timestamp('2015-09-03 01:00:00') |
|-----------------------------------------|
|                              1441213200 |
+-----------------------------------------+
9,from_unixtime(unix_timestamp)函数,将时间戳转换为时间字符串
mysql root@localhost:(none)> SELECT from_unixtime(1441209600)
+-----------------------------+
| from_unixtime(1441209600)   |
|-----------------------------|
| 2015-09-03 00:00:00         |
+-----------------------------+
mysql root@localhost:(none)> SELECT from_unixtime(1441209600,'%Y%m%d %H:%i:%s')
+-----------------------------------------------+
| from_unixtime(1441209600,'%Y%m%d %H:%i:%s')   |
|-----------------------------------------------|
| 20150903 00:00:00                             |
+-----------------------------------------------+

10,date_add()函数,日期计算函数

mysql root@localhost:(none)> SELECT date_add(now(),interval 1 year)
+-----------------------------------+
| date_add(now(),interval 1 year)   |
|-----------------------------------|
| 2016-08-25 13:53:16               |
+-----------------------------------+
mysql root@localhost:(none)> SELECT date_add(now(),interval 1 month)
+------------------------------------+
| date_add(now(),interval 1 month)   |
|------------------------------------|
| 2015-09-25 13:54:38                |
+------------------------------------+
mysql root@localhost:(none)> SELECT date_add(now(),interval 1 week)

mysql root@localhost:(none)> SELECT date_add(now(),interval 1 day)

mysql root@localhost:(none)> SELECT date_add(now(),interval 1 hour)

mysql root@localhost:(none)> SELECT date_add(now(),interval 1 minute)


mysql root@localhost:(none)> SELECT date_add(now(),interval 1 second)

同理 -1 指的是一年/月/日/天/时/分/秒以前
mysql root@localhost:(none)> SELECT date_add(now(),interval -1 year)
+------------------------------------+
| date_add(now(),interval -1 year)   |
|------------------------------------|
| 2014-08-25 13:57:46                |
+------------------------------------+

11,datediff(date1,date2),日期相减函数,返回的是天数
mysql root@localhost:(none)> SELECT datediff('2015-09-03','2015--8-25')
+---------------------------------------+
|   datediff('2015-09-03','2015--8-25') |
|---------------------------------------|
|                                     9 |
+---------------------------------------+
mysql root@localhost:(none)> SELECT datediff('2015--8-25','2015-09-03')
+---------------------------------------+
|   datediff('2015--8-25','2015-09-03') |
|---------------------------------------|
|                                    -9 |
+---------------------------------------+

12,timediff(time1,time2),时间相减函数,返回的是时间差值
mysql root@localhost:(none)> SELECT timediff('12:37:33','12:35:32')
+-----------------------------------+
| timediff('12:37:33','12:35:32')   |
|-----------------------------------|
| 0:02:01                           |
+-----------------------------------+
mysql root@localhost:(none)> SELECT timediff('12:35:32','12:37:33')
+-----------------------------------+
| timediff('12:35:32','12:37:33')   |
|-----------------------------------|
| -1 day, 23:57:59                  |
+-----------------------------------+

13,timestamp()时间戳转换,增,减函数

mysql root@localhost:(none)> select timestamp('2013-08-25');
+---------------------------+
| timestamp('2013-08-25')   |
|---------------------------|
| 2013-08-25 00:00:00       |
+---------------------------+
mysql root@localhost:(none)> select timestamp('2013-08-25','01:00:00');
+--------------------------------------+
| timestamp('2013-08-25','01:00:00')   |
|--------------------------------------|
| 2013-08-25 01:00:00                  |
+--------------------------------------+

14,timestampadd(),函数类似于 date_add(),强大于date_add()

mysql root@localhost:(none)> select timestampdiff(year,'2013-01-01','2015-01-01')
+-------------------------------------------------+
|   timestampdiff(year,'2013-01-01','2015-01-01') |
|-------------------------------------------------|
|                                               2 |
+-------------------------------------------------+
mysql root@localhost:(none)> select timestampdiff(month,'2013-01-01','2015-03-01')
+--------------------------------------------------+
|   timestampdiff(month,'2013-01-01','2015-03-01') |
|--------------------------------------------------|
|                                               26 |
+--------------------------------------------------+
mysql root@localhost:(none)> select timestampdiff(day,'2013-01-01','2015-03-01')
+------------------------------------------------+
|   timestampdiff(day,'2013-01-01','2015-03-01') |
|------------------------------------------------|
|                                            789 |
+------------------------------------------------+
mysql root@localhost:(none)> select timestampdiff(hour,'2013-01-01','2015-03-01')
+-------------------------------------------------+
|   timestampdiff(hour,'2013-01-01','2015-03-01') |
|-------------------------------------------------|
|                                           18936 |
+-------------------------------------------------+
mysql root@localhost:(none)> select timestampdiff(second,'2013-01-01','2015-03-01')
+---------------------------------------------------+
|   timestampdiff(second,'2013-01-01','2015-03-01') |
|---------------------------------------------------|
|                                          68169600 |
+---------------------------------------------------+