MySQL函数,是一种控制流程函数,属于数据库用语言。

MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。

日期和时间函数-函数概述

日期和时间函数是MySQL中常用的一类函数。主要用于处理日期时间。

日期和时间函数-curdate

CURDATE()或CURRENT_DATE():返回当前日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2012-01-13 |
+------------+
1 行于数据集 (0.01 秒)

mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2012-01-13 |
+----------------+
1 行于数据集 (0.01 秒)

日期和时间函数-curtime

CURTIME()或CURRENT_TIME():返回当前时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 03:01:16 |
+-----------+
1 行于数据集 (0.01 秒)

mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 03:01:26 |
+----------------+
1 行于数据集 (0.01 秒)

日期和时间函数-now

NOW():返回当前日期时间

1
2
3
4
5
6
7
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2012-01-13 09:25:37 |
+---------------------+
1 行于数据集 (0.01 秒)

日期和时间函数-month

MONTH(date)或MONTHNAME(date):返回date的月份,范围1到12

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select month(now());
+--------------+
| month(now()) |
+--------------+
| 2 |
+--------------+
1 行于数据集 (0.01 秒)

mysql> select monthname(now());
+------------------+
| monthname(now()) |
+------------------+
| February |
+------------------+
1 行于数据集 (0.01 秒)

日期和时间函数-week

WEEK(date):从日期中选择出周数

1
2
3
4
5
6
7
mysql> select week(now());
+-------------+
| week(now()) |
+-------------+
| 7 |
+-------------+
1 行于数据集 (0.01 秒)

日期和时间函数-year

YEAR(date):从日期中选择出年份

1
2
3
4
5
6
7
mysql> select year(now());
+-------------+
| year(now()) |
+-------------+
| 2012 |
+-------------+
1 行于数据集 (0.01 秒)

日期和时间函数-hour

HOUR(date):从日期中选择出小时数,返回time的小时,范围是0到23。

1
2
3
4
5
6
7
mysql> select hour(now());
+-------------+
| hour(now()) |
+-------------+
| 3 |
+-------------+
1 行于数据集 (0.02 秒)

日期和时间函数-minute

MINUTE():从日期中选择出分钟数,范围是0到59。

1
2
3
4
5
6
7
mysql> select minute(now());
+---------------+
| minute(now()) |
+---------------+
| 12 |
+---------------+
1 行于数据集 (0.01 秒)

日期和时间函数-second

SECOND(time):回来time的秒数,范围是0到59。

1
2
3
4
5
6
7
mysql> select second(now());
+---------------+
| second(now()) |
+---------------+
| 41 |
+---------------+
1 行于数据集 (0.01 秒)

日期和时间函数-weekday

WEEKDAY(date)或DAYNAME(date):返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select weekday(now());
+----------------+
| weekday(now()) |
+----------------+
| 0 |
+----------------+
1 行于数据集 (0.01 秒)

mysql> select dayname(now());
+----------------+
| dayname(now()) |
+----------------+
| Monday |
+----------------+
1 行于数据集 (0.01 秒)

日期和时间函数-dayofweek

DAYOFWEEK(date):返回日期date的星期索引(1=星期天,2=星期一, …7=星期六)。

1
2
3
4
5
6
7
mysql> select dayofweek(now());
+------------------+
| dayofweek(now()) |
+------------------+
| 2 |
+------------------+
1 行于数据集 (0.01 秒)

日期和时间函数-dayofmonth

DAYOFMONTH(date):返回date的月份中的日期,在1到31范围内。

1
2
3
4
5
6
7
mysql> select dayofmonth(now());
+-------------------+
| dayofmonth(now()) |
+-------------------+
| 17 |
+-------------------+
1 行于数据集 (0.01 秒)

日期和时间函数-dayofyear

DAYOFYEAR(date):返回date在一年中的日数, 在1到366范围内。

1
2
3
4
5
6
7
mysql> select dayofyear(now());
+------------------+
| dayofyear(now()) |
+------------------+
| 48 |
+------------------+
1 行于数据集 (0.01 秒)

日期和时间函数-quarter

QUARTER(date):返回date一年中的季度,范围1到4。

1
2
3
4
5
6
7
mysql> select quarter(now());
+----------------+
| quarter(now()) |
+----------------+
| 1 |
+----------------+
1 行于数据集 (0.02 秒)

日期和时间函数-date_add

DATE_ADD(date,INTERVAL expr type) ,进行日期增加的操作,可以精确到秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
mysql> select '1997-12-31 23:59:59'+interval 1 second;
+-----------------------------------------+
| '1997-12-31 23:59:59'+interval 1 second |
+-----------------------------------------+
| 1998-01-01 00:00:00 |
+-----------------------------------------+
1 行于数据集 (0.01 秒)

mysql> select '1997-12-31'+interval 1 second;
+--------------------------------+
| '1997-12-31'+interval 1 second |
+--------------------------------+
| 1997-12-31 00:00:01 |
+--------------------------------+
1 行于数据集 (0.02 秒)
mysql> select date_add('1997-12-31 23:59:59',interval 1 second);
+---------------------------------------------------+
| date_add('1997-12-31 23:59:59',interval 1 second) |
+---------------------------------------------------+
| 1998-01-01 00:00:00 |
+---------------------------------------------------+
1 行于数据集 (0.01 秒)

mysql> select date_add('1997-12-31 23:59:59',interval '1:1' minute_second);
+--------------------------------------------------------------+
| date_add('1997-12-31 23:59:59',interval '1:1' minute_second) |
+--------------------------------------------------------------+
| 1998-01-01 00:01:00 |
+--------------------------------------------------------------+
1 行于数据集 (0.01 秒)

日期和时间函数-date_sub

DATE_SUB(date,INTERVAL expr type) ,进行日期减少的操作,可以精确到秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> select '1997-12-31'-interval 1 second;
+--------------------------------+
| '1997-12-31'-interval 1 second |
+--------------------------------+
| 1997-12-30 23:59:59 |
+--------------------------------+
1 行于数据集 (0.01 秒)
mysql> select date_sub('1997-12-31 23:59:59',interval '1:1' minute_second);
+--------------------------------------------------------------+
| date_sub('1997-12-31 23:59:59',interval '1:1' minute_second) |
+--------------------------------------------------------------+
| 1997-12-31 23:58:58 |
+--------------------------------------------------------------+
1 行于数据集 (0.01 秒)

mysql> select date_sub('1997-12-31 23:59:59',interval 30 day);
+-------------------------------------------------+
| date_sub('1997-12-31 23:59:59',interval 30 day) |
+-------------------------------------------------+
| 1997-12-01 23:59:59 |
+-------------------------------------------------+
1 行于数据集 (0.01 秒)