若你指定了一个过于短的时间间隔值 (不包括type 关键词所预期的所有时间间隔部分), MySQL 假定你已经省去了时间间隔值的最左部分。 例如,你指定了一种类型的DAY_SECOND, expr 的值预期应当具有天、 小时、分钟和秒部分。若你指定了一个类似 '1:10'的值, MySQL 假定天和小时部分不存在,那么这个值代表分和秒。换言之, '1:10' DAY_SECOND 被解释为相当于 '1:10' MINUTE_SECOND。这相当于 MySQL将TIME 值解释为所耗费的时间而不是日时的解释方式。
假如你对一个日期值添加或减去一些含有时间部分的内容,则结果自动转化为一个日期时间值:
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY); |
假如你使用了格式严重错误的日期,则结果为 NULL。假如你添加了 MONTH、YEAR_MONTH或YEAR ,而结果日期中有一天的日期大于添加的月份的日期最大限度,则这个日期自动被调整为添加月份的最大日期:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH); |
◆ DATE_FORMAT(date,format)
根据format 字符串安排date 值的格式。
以下说明符可用在 format 字符串中:
|
说明符 |
说明 |
|
%a |
工作日的缩写名称 (Sun..Sat) |
|
%b |
月份的缩写名称 (Jan..Dec) |
|
%c |
月份,数字形式(0..12) |
|
%D |
带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...) |
|
%d |
该月日期, 数字形式 (00..31) |
|
%e |
该月日期, 数字形式(0..31) |
|
%f |
微秒 (000000..999999) |
|
%H |
小时(00..23) |
|
%h |
小时(01..12) |
|
%I |
小时 (01..12) |
|
%i |
分钟,数字形式 (00..59) |
|
%j |
一年中的天数 (001..366) |
|
%k |
小时 (0..23) |
|
%l |
小时 (1..12) |
|
%M |
月份名称 (January..December) |
|
%m |
月份, 数字形式 (00..12) |
|
%p |
上午AM)或下午 PM) |
|
%r |
时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM) |
|
%S |
秒 (00..59) |
|
%s |
秒 (00..59) |
|
%T |
时间 , 24小时制 (小时hh:分钟mm:秒数ss) |
|
%U |
周 (00..53), 其中周日为每周的第一天 |
|
%u |
周 (00..53), 其中周一为每周的第一天 |
|
%V |
周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用 |
|
%v |
周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用 |
|
%W |
工作日名称 (周日..周六) |
|
%w |
一周中的每日 (0=周日..6=周六) |
|
%X |
该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用 |
|
%x |
该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用 |
|
%Y |
年份, 数字形式,4位数 |
|
%y |
年份, 数字形式 (2位数) |
|
%% |
‘%’文字字符 |
所有其它字符都被复制到结果中,无需作出解释。
注意:‘%’字符要求在格式指定符之前。
月份和日期说明符的范围从零开始,原因是 MySQL允许存储诸如 '2004-00-00'的不完全日期.
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); |
◆ DAY(date)
DAY() 和DAYOFMONTH()的意义相同。
◆ DAYNAME(date)
返回date 对应的工作日名称。
mysql> SELECT DAYNAME('1998-02-05'); |
◆ DAYOFMONTH(date)
返回date 对应的该月日期,范围是从 1到31。
mysql> SELECT DAYOFMONTH('1998-02-03'); |
◆ DAYOFWEEK(date)
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工作日索引。这些索引值符合 ODBC标准。
mysql> SELECT DAYOFWEEK('1998-02-03'); |
◆ DAYOFYEAR(date)
返回date 对应的一年中的天数,范围是从 1到366。
mysql> SELECT DAYOFYEAR('1998-02-03'); |
◆ EXTRACT(type FROM date)
EXTRACT()函数所使用的时间间隔类型说明符同 DATE_ADD()或DATE_SUB()的相同,但它从日期中提取其部分,而不是执行日期运算。
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02'); |
◆ FROM_DAYS(N)
给定一个天数 N, 返回一个DATE值。
mysql> SELECT FROM_DAYS(729669); |
使用 FROM_DAYS()处理古老日期时,务必谨慎。他不用于处理阳历出现前的日期(1582)。请参见12.6节,“MySQL使用什么日历?”。
◆ FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format)
返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的unix_timestamp参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。
若format 已经给出,则结果的格式是根据format 字符串而定。 format 可以包含同DATE_FORMAT() 函数输入项列表中相同的说明符。
mysql> SELECT FROM_UNIXTIME(875996580); |
◆ GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')
返回一个格式字符串。这个函数在同DATE_FORMAT() 及STR_TO_DATE()函数结合时很有用。
第一个参数的3个可能值和第二个参数的5个可能值产生 15 个可能格式字符串 (对于使用的说明符,请参见DATE_FORMAT()函数说明表 )。

ISO 格式为ISO 9075, 而非ISO 8601.
也可以使用TIMESTAMP, 这时GET_FORMAT()的返回值和DATETIME相同。
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR')); |