当前位置:Gxlcms > 数据库问题 > mysql日期时间函数2

mysql日期时间函数2

时间:2021-07-01 10:21:17 帮助过:11人阅读

  通过下面的研究,认为yearweek()是适合的,它返回的是 201311这样的格式。若要把周六当做新的一周的开始,那么就是:   select yearweek(DATE_ADD(now(), INTERVAL 1 DAY));   mysql> select yearweek(DATE_ADD(now(), INTERVAL 1 DAY)); +-------------------------------------------+ | yearweek(DATE_ADD(now(), INTERVAL 1 DAY)) | +-------------------------------------------+ |                                    201311 | +-------------------------------------------+ 1 row in set   mysql> select yearweek(now()); +-----------------+ | yearweek(now()) | +-----------------+ |          201310 | +-----------------+ 1 row in set   mysql> 

mysql日期时间操作函数详解,更多请参见Mysql技术手册11.3节,“日期和时间类型”。

下面的例子使用了时间函数。以下询问选择了最近的 30天内所有带有date_col 值的记录:

mysql> SELECT something FROM tbl_name

    -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

注意,这个询问也能选择将来的日期记录。 

用于日期值的函数通常会接受时间日期值而忽略时间部分。而用于时间值的函数通常接受时间日期值而忽略日期部分。

返回各自当前日期或时间的函数在每次询问执行开始时计算一次。这意味着在一个单一询问中,对诸如NOW() 的函数多次访问总是会得到同样的结果(未达到我们的目的,单一询问也包括对存储程序或触发器和被该程序/触发器调用的所有子程序的调用 )。这项原则也适用于 CURDATE()、 CURTIME()、 UTC_DATE()、 UTC_TIME()、UTC_TIMESTAMP(),以及所有和它们意义相同的函数。

CURRENT_TIMESTAMP()、 CURRENT_TIME()、 CURRENT_DATE()以及FROM_UNIXTIME()函数返回连接当前时区内的值,这个值可用作time_zone系统变量的值。此外, UNIX_TIMESTAMP() 假设其参数为一个当前时区的时间日期值。更多信息请参见5.10.8节,“MySQL服务器时区支持”。

以下函数的论述中返回值的范围会请求完全日期。 若一个日期为“零” 值,或者是一个诸如‘2001-11-00‘之类的不完全日期, 提取部分日期值的函数可能会返回 0。 例如, DAYOFMONTH(‘2001-11-00‘) 会返回0。

ADDDATE(date,INTERVAL expr type) ADDDATE(expr,days) 
当被第二个参数的INTERVAL格式激活后, ADDDATE()就是DATE_ADD()的同义词。相关函数SUBDATE() 则是DATE_SUB()的同义词。对于INTERVAL参数上的信息 ,请参见关于DATE_ADD()的论述。

mysql> SELECT DATE_ADD(‘1998-01-02‘, INTERVAL 31 DAY);

        -> ‘1998-02-02‘

mysql> SELECT ADDDATE(‘1998-01-02‘, INTERVAL 31 DAY);

        -> ‘1998-02-02‘

若 days 参数只是整数值,则 MySQL 5.1将其作为天数值添加至 expr。

mysql> SELECT ADDDATE(‘1998-01-02‘, 31);

        -> ‘1998-02-02‘

ADDTIME(expr,expr2) 
ADDTIME()将 expr2添加至expr 然后返回结果。 expr 是一个时间或时间日期表达式,而expr2 是一个时间表达式。

mysql> SELECT ADDTIME(‘1997-12-31 23:59:59.999999‘,

    ->                ‘1 1:1:1.000002‘);

        -> ‘1998-01-02 01:01:01.000001‘

mysql> SELECT ADDTIME(‘01:00:00.999999‘, ‘02:00:00.999998‘);

        -> ‘03:00:01.999997‘

CONVERT_TZ(dt,from_tz,to_tz) 
CONVERT_TZ() 将时间日期值dt 从from_tz 给出的时区转到to_tz给出的时区,然后返回结果值。关于可能指定的时区的详细论述,更多信息请参见5.10.8节,“MySQL服务器时区支持”。若自变量无效,则这个函数会返回 NULL。

在从若from_tz 到UTC的转化过程中,该值超出 TIMESTAMP 类型的被支持范围,那么转化不会发生。关于 TIMESTAMP 范围的论述,更多信息请参见11.1.2节,“日期和时间类型概述”。

 

mysql> SELECT CONVERT_TZ(2004-01-01 12:00:00,GMT,MET);
+-----------------------------------------------+
| CONVERT_TZ(2004-01-01 12:00:00,GMT,MET) |
+-----------------------------------------------+
| 2004-01-01 13:00:00 |
+-----------------------------------------------+
1 row in set (0.00 sec)



mysql> SELECT CONVERT_TZ(2004-01-01 12:00:00,+00:00,+10:00);
+-----------------------------------------------------+
| CONVERT_TZ(2004-01-01 12:00:00,+00:00,+10:00) |
+-----------------------------------------------------+
| 2004-01-01 22:00:00 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

 

注释:若要使用诸如 ‘MET‘或 ‘Europe/Moscow‘之类的指定时间区,首先要设置正确的时区表。详细说明见5.10.8节,“MySQL服务器时区支持”。 

CURDATE() 
将当前日期按照‘YYYY-MM-DD‘ 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

mysql> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2016-06-26 |
+------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------+
| CURDATE() + 0 |
+---------------+
|      20160626 |
+---------------+
1 row in set (0.00 sec)

 

CURRENT_DATE CURRENT_DATE() 
CURRENT_DATE和CURRENT_DATE()是的同义词.

CURTIME() 
将当前时间以‘HH:MM:SS‘或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。 

mysql> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 20:31:52  |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------+
| CURTIME() + 0 |
+---------------+
|        203158 |
+---------------+
1 row in set (0.00 sec)

 

CURRENT_TIME, CURRENT_TIME() 
CURRENT_TIME 和CURRENT_TIME() 是CURTIME()的同义词。

CURRENT_TIMESTAMP, CURRENT_TIMESTAMP() 
CURRENT_TIMESTAMP和 CURRENT_TIMESTAMP()是NOW()的同义词。

DATE(expr) 
提取日期或时间日期表达式expr中的日期部分。

mysql> SELECT DATE(2003-12-31 01:02:03);
+-----------------------------+
| DATE(2003-12-31 01:02:03) |
+-----------------------------+
| 2003-12-31                  |
+-----------------------------+
1 row in set (0.00 sec)

 

DATEDIFF(expr,expr2) 
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。

mysql> SELECT DATEDIFF(1997-12-31 23:59:59,1997-12-30);
+----------------------------------------------+
| DATEDIFF(1997-12-31 23:59:59,1997-12-30) |
+----------------------------------------------+
|                                            1 |
+----------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATEDIFF(1997-11-30 23:59:59,1997-12-31);
+----------------------------------------------+
| DATEDIFF(1997-11-30 23:59:59,1997-12-31) |
+----------------------------------------------+
|                                          -31 |
+----------------------------------------------+
1 row in set (0.00 sec)

 

DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type) 
这 些函数执行日期运算。 date 是一个 DATETIME 或DATE值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。  Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被解释的方式。 

关键词INTERVA及 type 分类符均不区分大小写。

以下表显示了type 和expr 参数的关系:

type 值
 预期的 expr 格式
 

type  预期的 expr 格式
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND ‘SECONDS.MICROSECONDS‘
MINUTE_MICROSECOND ‘MINUTES.MICROSECONDS‘
MINUTE_SECOND ‘MINUTES:SECONDS‘
HOUR_MICROSECOND ‘HOURS.MICROSECONDS‘
HOUR_SECOND ‘HOURS:MINUTES:SECONDS‘
HOUR_MINUTE ‘HOURS:MINUTES‘
DAY_MICROSECOND ‘DAYS.MICROSECONDS‘
DAY_SECOND ‘DAYS HOURS:MINUTES:SECONDS‘
DAY_MINUTE ‘DAYS HOURS:MINUTES‘
DAY_HOUR ‘DAYS HOURS‘
YEAR_MONTH ‘YEARS-MONTHS‘

 

MySQL 允许任何expr 格式中的标点分隔符。表中所显示的是建议的 分隔符。若 date 参数是一个 DATE 值,而你的计算只会包括 YEAR、MONTH和DAY部分(即, 没有时间部分), 其结果是一个DATE 值。否则,结果将是一个 DATETIME值。

若位于另一端的表达式是一个日期或日期时间值 , 则INTERVAL expr type只允许在 + 操作符的两端。对于 –操作符,  INTERVAL expr type 只允许在其右端,原因是从一个时间间隔中提取一个日期或日期时间值是毫无意义的。 (见下面的例子)。

 

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 row in set (0.00 sec)

mysql> SELECT INTERVAL 1 DAY + 1997-12-31;
+-------------------------------+
| INTERVAL 1 DAY + 1997-12-31 |
+-------------------------------+
| 1998-01-01                    |
+-------------------------------+
1 row in set (0.01 sec)

mysql>  SELECT 1998-01-01 - INTERVAL 1 SECOND;
+----------------------------------+
| 1998-01-01 - INTERVAL 1 SECOND |
+----------------------------------+
| 1997-12-31 23:59:59              |
+----------------------------------+
1 row in set (0.00 sec)

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 row in set (0.00 sec)

mysql>  SELECT DATE_ADD(1997-12-31 23:59:59,INTERVAL 1 DAY);
+------------------------------------------------+
| DATE_ADD(1997-12-31 23:59:59,INTERVAL 1 DAY) |
+------------------------------------------------+
| 1998-01-01 23:59:59                            |
+------------------------------------------------+
1 row in set (0.00 sec)

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 row in set (0.00 sec)

mysql> SELECT DATE_SUB(1998-01-01 00:00:00,INTERVAL 1 1:1:1 DAY_SECOND);
+---------------------------------------------------------------+
| DATE_SUB(1998-01-01 00:00:00,INTERVAL 1 1:1:1 DAY_SECOND) |
+---------------------------------------------------------------+
| 1997-12-30 22:58:59                                           |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD(1998-01-01 00:00:00,INTERVAL -1 10 DAY_HOUR);
+-----------------------------------------------------------+
| DATE_ADD(1998-01-01 00:00:00,INTERVAL -1 10 DAY_HOUR) |
+-----------------------------------------------------------+
| 1997-12-30 14:00:00                                       |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_SUB(1998-01-02, INTERVAL 31 DAY);
+-----------------------------------------+
| DATE_SUB(1998-01-02, INTERVAL 31 DAY) |
+-----------------------------------------+
| 1997-12-02                              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD(1992-12-31 23:59:59.000002,INTERVAL 1.999999 SECOND_MICROSECOND);
+-------------------------------------------------------------------------------+
| DATE_ADD(1992-12-31 23:59:59.000002,INTERVAL 1.999999 SECOND_MICROSECOND) |
+-------------------------------------------------------------------------------+
| 1993-01-01 00:00:01.000001                                                    |
+-------------------------------------------------------------------------------+
1 row in set (0.00 sec)

 

 

若你指定了一个过于短的时间间隔值 (不包括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);
+----------------------------------------+
| DATE_ADD(1999-01-01, INTERVAL 1 DAY) |
+----------------------------------------+
| 1999-01-02                             |
+----------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD(1999-01-01, INTERVAL 1 HOUR);
+-----------------------------------------+
| DATE_ADD(1999-01-01, INTERVAL 1 HOUR) |
+-----------------------------------------+
| 1999-01-01 01:00:00                     |
+-----------------------------------------+
1 row in set (0.00 sec)

 

假如你使用了格式严重错误的日期,则结果为 NULL。假如你添加了  MONTH、YEAR_MONTH或YEAR ,而结果日期中有一天的日期大于添加的月份的日期最大限度,则这个日期自动被调整为添加月份的最大日期:

mysql> SELECT DATE_ADD(1998-01-30, INTERVAL 1 MONTH);
+------------------------------------------+
| DATE_ADD(1998-01-30, INTERVAL 1 MONTH) |
+------------------------------------------+
| 1998-02-28 |
+------------------------------------------+
1 row in set (0.00 sec)

 

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‘);
        -> ‘Saturday October 1997‘


mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00‘, ‘%H:%i:%s‘);
        -> ‘22:23:00‘


mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00‘,‘%D %y %a %d %m %b %j‘);
                          
        -> ‘4th 97 Sat 04 10 Oct 277‘


mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00‘, ‘%H %k %I %r %T %S %w‘);
 
        -> ‘22 22 10 10:23:00 PM 22:23:00 00 6‘


mysql> SELECT DATE_FORMAT(‘1999-01-01‘, ‘%X %V‘);
        -> ‘1998 52‘ 

DAY(date) 
DAY() 和DAYOFMONTH()的意义相同。

DAYNAME(date) 
返回date 对应的工作日名称。

mysql> SELECT DAYNAME(‘1998-02-05‘);

        -> ‘周四‘

DAYOFMONTH(date) 
返回date 对应的该月日期,范围是从 1到31。

mysql> SELECT DAYOFMONTH(‘1998-02-03‘);

        -> 3

DAYOFWEEK(date) 
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工作日索引。这些索引值符合 ODBC标准。

mysql> SELECT DAYOFWEEK(‘1998-02-03‘);

        -> 3

DAYOFYEAR(date) 
返回date 对应的一年中的天数,范围是从 1到366。

mysql> SELECT DAYOFYEAR(‘1998-02-03‘);

        -> 34

EXTRACT(type FROM date) 
EXTRACT()函数所使用的时间间隔类型说明符同 DATE_ADD()或DATE_SUB()的相同,但它从日期中提取其部分,而不是执行日期运算。 

mysql> SELECT EXTRACT(YEAR FROM ‘1999-07-02‘);

       -> 1999

mysql> SELECT EXTRACT(YEAR_MONTH FROM ‘1999-07-02 01:02:03‘);

       -> 199907

mysql> SELECT EXTRACT(DAY_MINUTE FROM ‘1999-07-02 01:02:03‘);

       -> 20102

mysql> SELECT EXTRACT(MICROSECOND

    ->                FROM ‘2003-01-02 10:30:00.00123‘);

        -> 123

FROM_DAYS(N) 
给定一个天数  N, 返回一个DATE值。

mysql> SELECT FROM_DAYS(729669);

        -> ‘1997-10-07‘

使用 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);

        -> ‘1997-10-04 22:23:00‘

 

mysql> SELECT FROM_UNIXTIME(875996580) + 0;

        -> 19971004222300

 

mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),‘%Y %D %M %h:%i:%s %x‘);

            -> ‘2003 6th August 06:22:58 2003‘

GET_FORMAT(DATE|TIME|DATETIME, ‘EUR‘|‘USA‘|‘JIS‘|‘ISO‘|‘INTERNAL‘) 
返回一个格式字符串。这个函数在同DATE_FORMAT() 及STR_TO_DATE()函数结合时很有用。

第一个参数的3个可能值和第二个参数的5个可能值产生 15 个可能格式字符串 (对于使用的说明符,更多信息请参见DATE_FORMAT()函数说明表 )。

 

函数调用 结果
GET_FORMAT(DATE,‘USA‘) ‘%m.%d.%Y‘
GET_FORMAT(DATE,‘JIS‘) ‘%Y-%m-%d‘
GET_FORMAT(DATE,‘ISO‘) ‘%Y-%m-%d‘
GET_FORMAT(DATE,‘EUR‘) ‘%d.%m.%Y‘
GET_FORMAT(DATE,‘INTERNAL‘) ‘%Y%m%d‘
GET_FORMAT(DATETIME,‘USA‘) ‘%Y-%m-%d-%H.%i.%s‘
GET_FORMAT(DATETIME,‘JIS‘) ‘%Y-%m-%d %H:%i:%s‘
GET_FORMAT(DATETIME,‘ISO‘) ‘%Y-%m-%d %H:%i:%s‘
GET_FORMAT(DATETIME,‘EUR‘) ‘%Y-%m-%d-%H.%i.%s‘
GET_FORMAT(DATETIME,‘INTERNAL‘) ‘%Y%m%d%H%i%s‘
GET_FORMAT(TIME,‘USA‘) ‘%h:%i:%s %p‘
GET_FORMAT(TIME,‘JIS‘) ‘%H:%i:%s‘
GET_FORMAT(TIME,‘ISO‘) ‘%H:%i:%s‘
GET_FORMAT(TIME,‘EUR‘) ‘%H.%i.%S‘
GET_FORMAT(TIME,‘INTERNAL‘) ‘%H%i%s‘
 

ISO 格式为ISO 9075, 而非ISO 8601.

也可以使用TIMESTAMP, 这时GET_FORMAT()的返回值和DATETIME相同。

mysql> SELECT DATE_FORMAT(‘2003-10-03‘,GET_FORMAT(DATE,‘EUR‘));

        -> ‘03.10.2003‘

mysql> SELECT STR_TO_DATE(‘10.31.2003‘,GET_FORMAT(DATE,‘USA‘));

        -> ‘2003-10-31‘

或见13.5.3节,“SET语法”。

HOUR(time) 
返回time 对应的小时数。对于日时值的返回值范围是从 0 到 23 。

mysql> SELECT HOUR(‘10:05:03‘);

        -> 10

然而,  TIME 值的范围实际上非常大, 所以HOUR可以返回大于23的值。

mysql> SELECT HOUR(‘272:59:59‘);

        -> 272

LAST_DAY(date) 
获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回NULL。

mysql> SELECT LAST_DAY(‘2003-02-05‘);

        -> ‘2003-02-28‘

mysql> SELECT LAST_DAY(‘2004-02-05‘);

        -> ‘2004-02-29‘

mysql> SELECT LAST_DAY(‘2004-01-01 01:01:01‘);

        -> ‘2004-01-31‘

mysql> SELECT LAST_DAY(‘2003-03-32‘);

        -> NULL

LOCALTIME, LOCALTIME() 
LOCALTIME 及 LOCALTIME()和NOW()具有相同意义。

LOCALTIMESTAMP, LOCALTIMESTAMP() 
LOCALTIMESTAMP和LOCALTIMESTAMP()和NOW()具有相同意义。

MAKEDATE(year,dayofyear) 
给出年份值和一年中的天数值,返回一个日期。dayofyear 必须大于 0 ,否则结果为 NULL。

mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);

        -> ‘2001-01-31‘, ‘2001-02-01‘

mysql> SELECT MAKEDATE(2001,365), MAKEDATE(2004,365);

        -> ‘2001-12-31‘, ‘2004-12-30‘

mysql> SELECT MAKEDATE(2001,0);

        -> NULL

MAKETIME(hour,minute,second) 
返回由hour、 minute和second 参数计算得出的时间值。

mysql> SELECT MAKETIME(12,15,30);

        -> ‘12:15:30‘

MICROSECOND(expr) 
从时间或日期时间表达式expr返回微秒值,其数字范围从 0到 999999。

mysql> SELECT MICROSECOND(‘12:00:00.123456‘);

        -> 123456

mysql> SELECT MICROSECOND(‘1997-12-31 23:59:59.000010‘);

        -> 10

MINUTE(time) 
返回 time 对应的分钟数,范围是从 0 到 59。

mysql> SELECT MINUTE(‘98-02-03 10:05:03‘);

        -> 5

MONTH(date) 
返回date 对应的月份,范围时从 1 到 12。

mysql> SELECT MONTH(‘1998-02-03‘);

        -> 2

MONTHNAME(date) 
返回date 对应月份的全名。

mysql> SELECT MONTHNAME(‘1998-02-05‘);

        -> ‘February ‘

NOW() 
返回当前日期和时间值,其格式为 ‘YYYY-MM-DD HH:MM:SS‘ 或YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。

mysql> SELECT NOW();

        -> ‘1997-12-15 23:50:26‘

mysql> SELECT NOW() + 0;

        -> 19971215235026

在一个存储程序或触发器内, NOW() 返回一个常数时间,该常数指示了该程序或触发语句开始执行的时间。这同SYSDATE()的运行有所不同。

PERIOD_ADD(P,N) 
添加 N 个月至周期P (格式为YYMM 或YYYYMM),返回值的格式为 YYYYMM。注意周期参数 P 不是日期值。 

mysql> SELECT PERIOD_ADD(9801,2);

        -> 199803

PERIOD_DIFF(P1,P2)  
返回周期P1和 P2 之间的月份数。P1 和P2 的格式应该为YYMM或YYYYMM。注意周期参数 P1和P2 不是日期值。

mysql> SELECT PERIOD_DIFF(9802,199703);

        -> 11

QUARTER(date) 
返回date 对应的一年中的季度值,范围是从 1到 4。

mysql> SELECT QUARTER(‘98-04-01‘);

 &nbs

人气教程排行