瑞当

瑞当科技
创新引领未来

MySQL时间和日期函数介绍

本文给大家带来MySQL时间和日期函数的介绍,下面是MySql各种内置时间函数:
1. curdate() ,  current_date() 用于获取当前的日期。
2. curtime() ,  current_time() 用于获取现在的时钟时间。
3. now(),current_timestamp(),localtime(),sysdate() 四类函数可以获取当前的日期和时钟时间
4. datediff()用于获取两个日期相隔的天数:datediff('2018.08.20','2019.02.03')   /* 得到的结果是有符号的。*/
5. adddate('n',d): 求得日期是n经过d天后的新日期。
6. adddate('n',interval 'a' type)  函数返回日期n后经过时间段a后的新时间。
7. subdate ('n',d) 日期n前d天。 8. unix_timestamp() 返回当前时间的 unix时间戳     unix_timestamp('n')  返回时间是n的 unix时间戳 #  Unix时间戳(Unix timestamp) 是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 9. monthname(n),dayname(n)  获取日期的月份和星期名
10. dayofyear(n),weekofyear(n),dayofmonth(n);  获取日期的天数,星期数、详见实践。
11. hour(n) | minute(n) | second(n) 获取时间的时分秒。
12. extract(type from n)  从时间n提取type信息
13. time_to_sec(n) 将n转化成秒为单位的时间 sec_to_time(n) 将单位的时间转化成时分秒的表达式
14. date_format(d,f) 将日期d转化成f格式  time_format(t,f) 将时间t转化成f格式

C:\Users\Administrator>mysql -u root -p
Enter password: ********

1.
mysql> select curdate(),current_date();
+------------+----------------+
| curdate()  | current_date() |
+------------+----------------+
| 2016-02-03 | 2016-02-03     |
+------------+----------------+
1 row in set (0.01 sec)

2.
mysql> select curtime(),current_time();
+-----------+----------------+
| curtime() | current_time() |
+-----------+----------------+
| 21:36:39  | 21:36:39       |
+-----------+----------------+
1 row in set (0.00 sec)

3.
mysql> select now(),current_timestamp(),localtime(),sysdate();
+---------------------+---------------------+---------------------+---------------------+
| now()               | current_timestamp() | localtime()         | sysdate()           |
+---------------------+---------------------+---------------------+---------------------+
| 2016-02-03 21:40:50 | 2016-02-03 21:40:50 | 2016-02-03 21:40:50 | 2016-02-03 21:40:50 |
+---------------------+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)

4.
mysql> select datediff('2015.08.20','2016.02.03');
+-------------------------------------+
| datediff('2015.08.20','2016.02.03') |
+-------------------------------------+
|                                -167 |
+-------------------------------------+
1 row in set (0.02 sec)

5.
mysql> select adddate('2019.02.03','10');
+----------------------------+
| adddate('2016.02.03','10') |
+----------------------------+
| 2016-02-13                 |
+----------------------------+
1 row in set (0.03 sec)

# 不过他们的格式没有严格的要求:

mysql> select adddate('2019-02-03',10);
+--------------------------+
| adddate('2016-02-03',10) |
+--------------------------+
| 2016-02-13               |
+--------------------------+
1 row in set (0.00 sec)

6.
mysql> select adddate('2019-02-03',interval '12 3' year_month);
+--------------------------------------------------+
| adddate('2019-02-03',interval '12 3' year_month) |
+--------------------------------------------------+
| 2028-05-03                                       |
+--------------------------------------------------+
1 row in set (0.00 sec)

7.
mysql> select subdate('2016-02-03',10);
+--------------------------+
| subdate('2016-02-03',10) |
+--------------------------+
| 2016-01-24               |
+--------------------------+
1 row in set (0.00 sec)

8.
mysql> select unix_timestamp(),unix_timestamp('2016.02.03');
+------------------+------------------------------+
| unix_timestamp() | unix_timestamp('2016.02.03') |
+------------------+------------------------------+
|       1454509344 |                   1454428800 |
+------------------+------------------------------+
1 row in set (0.00 sec)

9.
mysql> select monthname(curdate()),dayname(curdate());
+----------------------+--------------------+
| monthname(curdate()) | dayname(curdate()) |
+----------------------+--------------------+
| February             | Wednesday          |
+----------------------+--------------------+
1 row in set (0.04 sec)

10.
mysql> select dayofyear(curdate()),weekofyear(curdate()),dayofmonth(curdate());
+----------------------+-----------------------+-----------------------+
| dayofyear(curdate()) | weekofyear(curdate()) | dayofmonth(curdate()) |
+----------------------+-----------------------+-----------------------+
|                   34 |                     5 |                     3 |
+----------------------+-----------------------+-----------------------+
1 row in set (0.00 sec)

11.
mysql> select hour(now()),minute(now()),second(now());
+-------------+---------------+---------------+
| hour(now()) | minute(now()) | second(now()) |
+-------------+---------------+---------------+
|          22 |            36 |            29 |
+-------------+---------------+---------------+
1 row in set (0.03 sec)

12.
mysql> select extract(hour from now()),extract(month from now()),extract(year from now());
+--------------------------+---------------------------+--------------------------+
| extract(hour from now()) | extract(month from now()) | extract(year from now()) |
+--------------------------+---------------------------+--------------------------+
|                       22 |                         2 |                     2016 |
+--------------------------+---------------------------+--------------------------+
1 row in set (0.00 sec)

13.
mysql> select time_to_sec(now()),sec_to_time('10000');
+--------------------+----------------------+
| time_to_sec(now()) | sec_to_time('10000') |
+--------------------+----------------------+
|              81870 | 02:46:40             |
+--------------------+----------------------+
1 row in set (0.00 sec)

14.
mysql> select date_format(curdate(),'year:%y month:%m day:%d');
+-------------------------+
| date                    |
+-------------------------+
| year:16 month:02 day:03 |
+-------------------------+
1 row in set (0.00 sec)
mysql> select date_format(now(),'%T');
+----------+
| time     |
+----------+
| 22:57:02 |
+----------+
1 row in set (0.00 sec)

mysql> select date_format(now(),'%y.%m.%d %T');
+----------------------------------+
| date_format(now(),'%y.%m.%d %T') |
+----------------------------------+
| 16.02.03 23:02:15                |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select time_format(now(),'date:%y-%m-%d time:%h:%m:%s');
+--------------------------------------------------+
| time_format(now(),'date:%y-%m-%d time:%h:%m:%s') |
+--------------------------------------------------+
| date:00-00-00 time:11:00:33                      |
+--------------------------------------------------+
1 row in set (0.00 sec)