Mysql教程

13.4日期和时间函数

函数 作用
CURDATE(),CURRENT_DATE() 返回当前日期
CURTIME(),CURRENT_TIME() 返回当前时间
NOW(),CURRENT_DATE(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP() 返回当前日期和时间
UNIX_TIMESTAMP() 以UNIX时间戳的形式返回当前时间
UNIX_TIMESTAMP(d) 将时间d以UNIX时间戳的形式返回
FROM_UNIXTIME(d) 把UNIX时间戳的时间转换为普通格式的时间
UTC_DATE() 返回UTC日期
UTC_TIME() 返回UTC时间
MONTH(d) 返回日期d中的月份值,范围是1~12
MONTHNAME() 返回日期d中的月份名称,如January,February
DAYNAME() 返回日期d是星期几,如Monday,Tuesday等
DAYOFWEEK(d) 返回日期d是星期几,1表示星期日,2表示星期一等
WEEKDAY(d) 返回日期d是星期几,0表示星期一,1表示星期二等
WEEK(d) 计算日期是本年的第几个星期,范围是0~53
WEEKOFYEAR(d) 计算日期是本年的第几个星期,范围是1~53
DAYOFYEAR(d) 计算日期d是本年的第几天
YEAR(d) 返回日期指中的年份值
QUARTER(d) 返回日期d是第几季度,范围是1~4
HOUR(t) 返回时间t的小时值
HMINUTE(t) 返回时间t的分钟值
SECOND(t) 返回时间t的秒钟值
EXTRACT(type FROM d) 从日期d中获取指定的值,type指定返回的值,如YEAR,HOUR等
TIME_TO_SEC(t) 将时间t转换为秒
SEC_TO_TIME(S) 将以秒为单位的时间s转换为时分秒的格式
TO_DAYS(d) 计算日期d~0000年1月1日的天数
FROM_DAYS(n) 计算从0000年1月1日开始n填后的日期
DATEDIEF(d1,d2) 计算d1,d2之间相隔的天数
ADDDATE(d,n)) 计算起始日期d加上n天的日期
ADDDATE(d,INTERVAL expr type) 计算其实日期加上一个时间段后的日期
DATE_ADD(d,INTERVAL expr type) 同ADDDATE(d,INTERVAL expr type)
SUBDATE(d,INTERVAL expr type) 计算起始日期d减去一个时间段后的日期
ADDTIME(t,n) 计算起始时间加上n秒后的时间
SUBTIME(d,n) 计算起始时间t加上n秒后的时间
DATE_FORMAT(d,f) 按照表达式f的要求显示日期d
TIME_FORMAT(t,f) 按照表达式f的要求显示时间t
GET_FORMAT(type,s) 根据字符串s获取type类型数据的显示格式

13.4.1获取当前日期的函数和获取当前时间的函数

CURDATE()和CURRENT_DATE()函数获取当前日期;CURTIME()和CURRENT_DATE()函数获取当前时间。

【示例13-31】下面将演示CURDATE()和CURRENT_DATE()、CURTIME()和CURTIME()4个函数的使用。

mysql> SELECT CURDATE(),CURRENT_DATE(),CURTIME(),CURTIME();
+------------+----------------+-----------+-----------+
| CURDATE()  | CURRENT_DATE() | CURTIME() | CURTIME() |
+------------+----------------+-----------+-----------+
| 2009-10-25 | 2009-10-25     | 10:37:22  | 10:37:22  |
+------------+----------------+-----------+-----------+
1 row in set (0.02 sec)

结果显示,CURDATE()和CURRENT_DATE()的结果是一样的,都是当前日期;CURTIME()和CURTIMETIME()的结果也是一样的,都是当前时间。

13.4.2 获取当前日期和时间的函数

NOW(), CURRENT_TIMESTAMP(), LOCALTIME()和 SYSDATE()等4个函数都用来获取当前的日期和时间。这四个函数表示相同的含义。

【示例 13-32】下面将演示 NOW()、CURRENT_TIMESTAMP(), LOCALTIME()和SYSDATE()4个函数的使用

mysql> SELECT NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE();
+---------------------+---------------------+---------------------+---------------------+
| NOW()               | CURRENT_TIMESTAMP() | LOCALTIME()         | SYSDATE()           |
+---------------------+---------------------+---------------------+---------------------+
| 2009-10-25 16:35:51 | 2009-10-25 16:35:51 | 2009-10-25 16:35:51 | 2009-10-25 16:35:51 |
+---------------------+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)

结果显示,这4个函数返回的结果都是“2015-09-21 10:42:11”。这正是当前的日期和 时间。除了4个函数以外,LOCALTIMESTAMP()函数也可以获取当前时间和日期。其运 行结果和上面四个函数是一样的。

说明:NOW()、CURRENT_TIMESTAMP(), LOCALTIME()、SYSDATE()和LOCALTIMESTAMP()这几个函数都可以获取系统当前日期和时间。而且,显示时间格 式也是一样的。通常情况下都是使用NOW()函数。

13.4.3 UNOIX时间戳函数

UNIX_TIMESTAMP()函数以UNIX时间戳的形式返回当前时间; UNIX_TIMESTAMP(d)函数将时间d以UNIX时间戳的形式返回;FROM_UNIXTIME(d) 函数把UNIX时间戳的时间转换为普通格式的时间。UNIX_TIMESTAMP(d)函数和 FROM_UNIXTIME(d)互为反函数。

【示例 13-33】下面将演示 UNIX_TIMESTAMP()、UNIX_TIMESTAMP(d)和FROM_ UNIXTIME(d)3个函数的使用。

mysql> SELECT NOW(),UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW());
+---------------------+------------------+-----------------------+
| NOW()               | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) |
+---------------------+------------------+-----------------------+
| 2009-10-25 16:35:51 |       1256459751 |            1256459751 |
+---------------------+------------------+-----------------------+
1 row in set (0.00 sec)

结果显示,当前时间是“2009-10-25 16:35:51";当前时间的UNIX时间戳的形式为 “1256459751”。

mysql> SELECT dt,UNIX_TIMESTAMP(dt),FROM_UNIXTIME('1256458559') FROM t4;
+---------------------+--------------------+-----------------------------+
|           dt        | UNIX_TIMESTAMP(dt) | FROM_UNIXTIME('1256458559') |
+---------------------+--------------------+-----------------------------+
| 2009-10-25 16:15:59 |     1256458559     |     2009-10-25 16:15:59     |
+---------------------+--------------------+-----------------------------+
1 row in set (0.00 sec)

结果显示,UNIX_TIMESTAMP(d)函数和FROM_UNIXTIME(d)互为反函数。

13.4.4 返回UTC日期的函数和返回UTC时间的函数

口几_0八丁£()函数返回UTC日期;廿1^—丁咖£()函数返回UTC时间。其中,UTC是 Universal Coordinated Time的缩写,也就是国际协调时间。 【示例13-34】下面将演示UTC_DATE()函数和UTC_TIME()函数的使用。

mysql> SELECT CURDATE(),UTC_DATE(),CURTIME(),UTC_TIME();
+------------+------------+----------+-----------+
| CURDATE()  | UTC_DATE0  | CURTIME()| UTC_TIME()|
+------------+------------+----------+-----------+
| 2009-10-25 | 2009-10-25 | 16:42:38 | 08:42:38  |
+------------+------------+----------+-----------+
1 row in set (0.00 sec)

结果显示,返回的日期是一样的,返回的时间相差几个时区。

13.4.5 获取月份的函数MONTH(d)和 MONTHNAME(d)

MONTH(d)函数返回日期d中的月份值,其取值范围为1~12; MONTHNAME(d)返回日期d中的月份的英文名称,如January,February等。其中,参数d可以是日期和时间, 也可以是日期。

【示例13-35】下面将演示MONTH(d)和 MONTHNAME(d)函数的使用。

mysql> SELECT dt,MONTH(dt),MONTHNAME(dt) FROM t4;
+--------------------+--------------+---------------------+
|        dt          |   MONTH(dt)  |    MONTHNAME(dt)    |
+--------------------+--------------+---------------------+
|2009-10-25 16:15:59 |       10     |       October       |
+--------------------+--------------+---------------------+
1 row in set (0.00 sec)
mysql> SELECT MONTH('2008-8-8'),MONTHNAME('2008-8-8');
+-------------------+-----------------------+
| MONTH('2008-8-8') | MONTHNAME('2008-8-8') |
+-------------------+-----------------------+
|                 8 | August                |
+-------------------+-----------------------+
1 row in set (0.00 sec)

结果显示,MONTH(d)函数返回了数字表示的月份; MONTHNAME(d)函数返回了月份的英文名。

13.4.6 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)

DAYNAME(d)函数返回日期d是星期几,显示其英文名,如Monday,Tuesday等;DAYOFWEEK(d)函数也返回日期4是星期几,1表示星期日,2表示星期一,依次类推;WEEKDAY(d)函数也返回日期d是星期几,0表示星期一,1表示星期二,依次类推。其中,参数d可以是日期和时间,也可以是日期。

【示例13-36】下面将演示DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)函数的使用。

mysql> SELECT d,DAYNAME(d),DAYOFWEEK(d),WEEKDAY(d) FROM t4;
+----------+---------------+---------------+-------------+
|      d   |   DAYNAME(d)  |  DAYOFWEEK(d) |  WEEKDAY(d) |
+----------+---------------+---------------+-------------+
|2009-10-25|    Sunday     |       1       |       6     |
+----------+---------------+---------------+-------------+
1 row in set (0.00 sec)

结果显示,2009-10-25正好是星期日,DAYNAME(d)返回值是Sunday; DAYOFWEEK(d) 返回值是1; WEEKDAY(d)返回值是6。

注意:DAYNAME(d)、DAYOFWEEK(d)函数都是用数字表示星期,但是这两者的表示 方法有点不同。DAYOFWEEK(d)的值是1~7,1表示星期日,2表示星期一,依次类推。而DAYOFWEEK(d)的值是0~6, 0表示星期一,1表示星期二,依次类推。 使用时一定要注意这两者的区别。

获取星期数的函数WEEK(d)和WEEKOFYEAR(d)

WEEK(d)函数和WEEKOFYEAR(d)函数都是计算日期d是本年的第几个星期。返回值 的范围是1~53。

【示例13-37】下面将演示WEEK(d)和WEEKOFYEAR(d)使用。

mysql> SELECT d,WEEK(d),WEEKOFYEAR(d),dt,WEEK(dt),WEEKOFYEAR(dt) FROM t4;
+---------------+-----------------+--------------+------------+--------+------------+------------------+
|      d        |     WEEK(d)     |WEEKOFYEAR(d) |       dt            |  WEEK(dt)  |  WEEKOFYEAR(dt)  |
+---------------+-----------------+--------------+------------+--------+------------+------------------+
| 2009-10-25    |       43        |      43      | 2009-10-25 16:15:59 |      43    |        43        |
+---------------+-----------------+--------------+------------+--------+------------+------------------+
1 row in set (0.00 sec)

13.4.8 获取天数的函数DAYOFYEAR(d),DAYOFMONTH(d)

DAYOFYEAR(d)函数日期d是本年的第几天DAYOFMONTH(d)函数返回计算日期d是本月的第几天。


【示例13-38】下面将演示DAYOFYEAR(d),DAYOFMONTH(d)函数的使用。

mysql> SELECT d,DAYOFYEAR(d),DAYOFMONTH(d) FROM t4; +------------+----------------+-----------------+ |     d      |  DAYOFYEAR(d)  |  DAYOFMONTH(d)  | +------------+----------------+-----------------+ | 2009-10-25 |      298       |       25        | +------------+----------------+-----------------+ 1 row in set (0.00 sec)

结果显示,“2009-10-25”是2009年的第298天,是10月的第25天。

13.4.9获取年份、季度、小时、分钟和秒钟的函数

YEAR(d)函数返回日期d中的年份值;QUARTER(d)函数返回日期d是本年第几季度,值的范围是1~4; HOUR(t)函数返回时间t中的小时值;MINUTE(t)函数返回时间t中的分 钟值;SECOND(t)函数返回时间1中的秒钟值。

【示例 13-39】下面将演示 YEAR(d)、QUARTER(d), HOUR(t),MINUTE(t)和 SECOND(t)5个函数的使用。

mysql> SELECT d,YEAR(d),QUARTER(d) FROM t4;
+------------+----------+------------+
|     d      |  YEAR(d) | QUARTER(d) |
+------------+----------+------------+
| 2009-10-25 |   2009   |    4       |
+------------+----------+------------+
1 row in set (0.00 sec)
mysql> SELECT t,HOUR(t),MINUTE(t),SECQND(t) FROM t4;
+------------+-----------+-------------+-------------+
|     t      |  HOUR(t)  |  MINUTE(t)  |  SECQND(t)  |
+------------+-----------+-------------+-------------+
|  16:15:59  |    16     |      15     |      59     |
+------------+-----------+-------------+-------------+
1 row in set (0.00 sec)

13.4.10获取日期的指定值的函数EXTRACT(type FROM d)

EXTRACT(type FROM d)函数从日期d中获取指定的值。这个值是什么由type的值决定。type 的取值可以是YEAR、MONTH、DAY、HOUR、MmUTE和SECOND。如果type的值是YEAR结果返回年份值;MONTH返回月份值;DAY返回是几号;HOUR返回小时值;MINUTE返回分钟值;SECOND返回秒钟值。

【示例13-40】下面将演示EXTRACT(type FROM d)函数的使用。

mysql> SELECT dt,EXTRACT(YEAR FROM dt),EXTRACT(MINUTE FROM dt) FROM t4;
+---------------------+-------------------------+---------------------------+
|         dt          |  EXTRACT(YEAR FROM dt)  |  EXTRACT(MINUTE FROM dt)  |
+---------------------+-------------------------+---------------------------+
| 2009-10-15 16:15:59 |            2009         |              15           |
+---------------------+-------------------------+---------------------------+
1 row in set (0.00 sec)

结果显示,type值为YEAR时,结果从2009-10-25 16:15:59返回了年份2009; type值为MINUTE时,返回了分钟值15。

技巧:处理日期和时间数据时EXTRACT(type FROM d)函数非常有用。例如,学生表中将学生的出生年月存储在birth字段中。但是现在需要查询学生的年龄,那么 需要用现在的年份减去学生的出生年份。这就需要使用EXTRACT(type FROM d)中分离出学生的出生年份。

13.4.11 时间和秒钟转换的函数

TIME_TO_SEC(t)函数将时间t转换为以秒为单位的时间;SEC_TO_TIME(s)函数将以秒为单位的时间5转换为时分秒的格式。TIME_TO_SEC(t)和SEC_TO_TIME(s)互为反函数。

【示例13-41】下面将演示TIME_TO_SEC(t),SEC_TO_TIME(s)函数的使用。

mysql> SELECT t,TIME_TO_SEC(t),SEC_TO_TIME(58559) FROM t4;
+---------+----------------+--------------------+
|    t    | TIME_TO_SEC(t) | SEC_TO_TIME(58559) |
+---------+----------------+--------------------+
|16:15:59 |      58559     |      16:15:59      |
+---------+----------------+--------------------+
1 row in set (0.00 sec)

结果显示,时间为16:15:59。TIME_TO_SEC(t)将时间t变化以秒为单位的时间。因为 16*60*60+15*60+59 刚好等于58559。SEC_TO_TIME(58559)正好是TIME_TO_SEC(t)的逆运算。

13.4.12计算日期和时间的函数

1.TO_DAYS(d),FROM_DAYS(d),DATEDIFF(d1,d2)函数

TO_DAYS(d)函数计算日期d与0000年1月1日的天数;FROM_DAYS(d)函数计算从0000年1月1日开始0天后的曰期;DATEDIFF(d1,d2)函数计算日期d与d2之间相隔的 天数。

【示例 13-42】下面将演示TO_DAYS(d),FROM_DAYS(n),DATEDIFF(dl,d2)3 个函数的使用。

mysql>SELECTT d,TO_DAYS(d),FROM_DAYS(734070),DATEDIFF(d,'2009-10-24') FROM t4;
+-----------------+----------------+-------------------+--------------------------+
|        d        |   TO_DAYS(d)   | FROM_DAYS(734070) | DATEDIFF(d,'2009-10-24') |
+-----------------+----------------+-------------------+--------------------------+
|    2009-10-25   |     734070     |    2009-10-25     |             1            |
+-----------------+----------------+-------------------+--------------------------+
1 row in set (0.00 sec)

结果显示,TO_DAYS(d),FROM_DAYS(n)互为反函数; DATEDIFF(d,'2009-10-24')计算出“2009-10-25”与“2009-10-24”之间只相隔1天。这里可以知道,DATEDIFF(dl,d2) 函数是用dl的日期减去(12的日期

2. ADDDATE(d,n),SUBDATE(d,n),ADDTIME(t,n)和SUBTIME(t,n)函数

ADDDATE(d,n)函数返回起始日期d加上n天的日期;SUBDATE(d,n)函数返回起始日期d减去n天的日期;ADDTIME(t,n)函数返回起始时间t加上n秒后的时间;SUBTIME(t,n)函数返回起始时间t减去n秒后的时间。

【示例 13-43】下面将演示 ADDDATE(d,n)、SUBDATE(d,n), ADDTIME(t,n)和SUBTIME(t,n)4个函数的使用。

mysql> SELECT d,ADDDATE(d,3),SUBDATE(d,3),t,ADDTIME(t,5),SUBTIME(t,5) FROM t4;
+------------+----------------+------------------+-------------+----------------+----------------+
|      d     |  ADDDATE(d,3)  |  SUBDATE(d,3)    |       t     |  ADDTIME(t,5)  |  SUBTIME(t,5)  |
+------------+----------------+------------------+-------------+----------------+----------------+
| 2009-10-25 |  2009-10-28    |    2009-10-22    |   16:15:59  |    16:16:04    |    16:15:54    |
+------------+----------------+------------------+-------------+----------------+----------------+
1 row in set(0.00 sec)

结果显示,t4表中d字段的数据为“2009-10-25”;ADDDATE(d,3)S0J d值3天以后的日期;SUBDATE(d,3)返回了d值3天以前的日期;t4表中1字段的值为“16:15:59”; ADDTIME(t,5)返回了t值5秒以后的时间;SUBTIME(t,5)返回了t值5秒以前的时间。

3. ADDDATE(d,INTERVAL expr type)和DATE_ADD(d,INTERVAL expr type)函数

ADDDATE(d,INTERVAL expr type)和DATE_ADD(d,INTERVAL expr type)函数返回起始日期d加上一个时间段后的日期;SUBDATE(d,INTERVAL expr type)函数返回起始 日期d减去一个时间段后的日期。上面3个函数的expr是表示时间段长度的表达式。该表达式与后面的间隔类型type对应。MySQL中的日期间隔类型如表13.4所.

类型 含义 expr表达式
YEAR YY
MONTH MM
DAY DD
HOUR hh
MINUTE mm
SECOND ss
YEAR_MONTH 年和月 YY和MM之间用任意符号隔开
DAY_HOUR 日和小时 dd和hh之间用任意符号隔开
DAY_MINUTE 日和分钟 dd和mm之间用任意符号隔开
DAY_SECOND 日和秒钟 dd和ss之间用任意符号隔开
HOUR_MINUTE 时和分 hh和mm之间用任意符号隔开
HOUR_SECOND 时和秒 hh和ss之间用任意符号隔开
MINUTE_SECOND 分和秒 mm和ss之间用任意符号隔开

【示例13-44】下面使用ADDDATE(d,INTERVAL expr type)函数计算一年零一个月后的日期和时间。

mysql>SELECTT  dt ,ADDDATE(d,INTERVAL '11' YEAR_MONTH) FROM t4;
+---------------------+-------------------------------------+
|          dt         | ADDDATE(d,INTERVAL '11' YEAR_MONTH )|
+---------------------+-------------------------------------+
| 2009-10-25 16:15:59 |      2010-11-25 16:15:59            |
+---------------------+-------------------------------------+
1 row in set(0.00 sec)

本示例中,时间间隔用的是YEAR_MONTH; expr表达式中年和月之间用空格隔开; ADDDATE()函数返回的结果是d中日期一年零一个月以后的日期和时间。 MySQL中还可以使用负数来指定时间

13.4.13 将日期和时间格式化的函数

1. DATE_FORMAT(d,f)函数

DATE_FORMAT(d,f)函数按照表达式f的要求显示日期d表达式^旨定了显示的格式。 MySQL中的日期和时间格式下表所示。

符号 含义 取值示例
%Y 以4位数字表示年份 2008,2009等
%y 以两位数字表示年份 98,99等
%m 一两位数字表示月份 01,02,...12
%c 以数字表示月份 1,2,...,12
%M 月份的英文名 January,February,...,December
%b 月份的英文缩写 Jan,Feb,...Dec
%U 表示星期数,其中Sunday是星期的第一天 00~52
%u 表示星期数,其中Monday是星期的第一天 00~52
%j 以3位数字表示年终的天数 001~366
%d 以2位数字表示月中的几号 01,02,...31
%e 以数字表示月中的几号 1,2,...31
%D 以英文后缀表示月中的几号 1st,2nd,...,
%w 以数字形式表示星期几 0表示Sunday,1表示Monday,...
%W 星期几的英文名 Monday,...,Sunday
%a 星期几的英文缩写 Mon,...,Sun
%T 24小时制的时间形式 00:00:00~23:59:59
%r 12小时制的时间形式 12:00:00AM~11:59:59PM
%p 上午(AM),下午(PM) AM或PM
%k 以数字表示24小时 01~23
%l 以数字表示12小时 1~12
%H 以2位数字表示24小时 01~23
%h,%I 以2位数表示12小时 01~12
%i 以2位数字表示分 00~59
%S,%s 以两位数字表示时 00~59
%% 标识符 %

【示例13-46】下面用与“Jan lst l986” 一样的形式来显示t4表中d字段中的日期。

mysql> SELECT d,DATE_FORMAT(d,'%b %D %Y') FROM t4;
+---------------+-----------------------------+
|       d       |  DATE_FORMAT(d,'%b %D %Y')  |
+---------------+-----------------------------+
|  2009-10-25   |       Oct 25th 2009         |
+---------------+-----------------------------+
1 row in set (0.09 sec)

结果显示,2009-10-25 转换成 Oct 25th 2009。

【示例13-47】下面计算t4表中d字段中的日期是一年中的第几天、星期几。

mysql>SELECT d.DATE_FORMAT(d,'%j') DAY,DATE_FORMAT(d,'%W') WEEK FROM t4;
+-------------+-------+----------+
|      d      |  DAY  |   WEEK   |
+-------------+-------+----------+
| 2009-10-25  |  298  |   Sunday |
+-------------+-------+----------+
1 row in set (0.09 sec)

结果显示,2009-10-25是本年的第298天。这一天是星期日。其中,DAY和WEEK是SELECT语句中为字段取的别名。

2. TIME_FORMATE(t,f)函数

TIME_FORMATE(t,f)函数按照表达式f的要求显示时间1。表达式f指定了显示的格式。 时间格式见表13.5。因为TIME_FORMATE(t,f)只处理时间,所以f只使用时间格式。

【示例13-48】下面将t4表中t字段中的时间用12小时制来显示。

mysq> SELECT t,TIME_FORMAT(t,'%r') FROM t4;
+-----------+-----------------------+
|     t     |  TIME_FORMAT(t,'%r')  |
+-----------+-----------------------+
| 16-15-59  |     04:15:59 PM       |
+-----------+-----------------------+
1 row in set (0.09 sec)
函数 返回的格式字符串 日期和时间的示例
GET_FOMAT(DATE,'EUR') '%d.%m.%Y' 30.02.2010
GET_FOMAT(DATE,'USA') '%d.%m.%Y' 02.30.2010
GET_FOMAT(DATE,'JIS') '%Y-%m-%d' 2010-02-30
GET_FOMAT(DATE,'ISO') '%Y.%m.%d' 2010-02-30
GET_FOMAT(DATE,'INTERNAL') '%Y%m%d' 20100230
GET_FOMAT(DATETIME,'EUR') '%Y-%m-%d-%H.%i.%s' 2010-02-30-15.20.04
GET_FOMAT(DATETIME,'USA') '%Y-%m-%d-%H.%i.%s' 2010-02-30-15.20.04
GET_FOMAT(DATETIME,'JIS') '%Y-%m-%d %H:%i:%s' 2010-02-30 15:20:04
GET_FOMAT(DATETIME,'ISO') '%Y-%m-%d-%H:%i:%s' 2010-02-30 15:20:04
GET_FOMAT(DATETIME,'INTERNAL') '%Y%m%d%H%i%s' 20100230152004
GET_FOMAT(TIME,'EUR') '%H.%i.%S' 15.20.04
GET_FOMAT(TIME,'USA') '%h:%i:%s:%P' 03:20:04 PM
GET_FOMAT(TIME,'JIS') '%H:%i:%S' 15:20:04
GET_FOMAT(TIME,'ISO') '%H:%i:%S' 15:20:04
GET_FOMAT(TIME,'INTERNAL') '%H:%i:%S' 15:20:04

使用GET_FORMATE(DATETIME,'USA')函数只会返回一个格式字符串。

【示例13-49】下面SELECT语句中只使用0GET_FORMATE(DATETIME,'USA')函数。

mysql> SELECT GET_FORMAT(DATETIME,'ISO'),GET_FORMAT(DATE,'EUR'),GET_FORMAT(TIME,'USA');
+----------------------------+------------------------+------------------------+
| GET_FORMAT(DATETIME,'ISO') | GET_FORMAT(DATE,'EUR') | GET_FORMAT(TIME,'USA') |
+----------------------------+------------------------+------------------------+
| %Y-%m-%d %H:%i:%s          | %d.%m.%Y               | %h:%i:%s %p            |
+----------------------------+------------------------+------------------------+
1 row in set (0.02 sec)

结果显示,GET_FORMAT(DATETIME, 'ISO')返回的字符串是"%Y-%m-%d %H:%i:%s";GET_FORMAT(DATE,'EUR')返回的字符串是"%d.%m.%Y"; GET_FORMAT(TIME,'USA')返 回的字符串是"%h:%i:%s:%P"这些返回的字符串与表13.6 中一致。

GET_FORMATE(type,s)函数可以与DATE_FORMATE(d,f)函数和TIME_FORMAT(t,f)数一起使用。GET_FORMATE(type,s)可以替代那两个函数中的参数。



关注微信获取最新动态