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)可以替代那两个函数中的参数。