MySQL日期函数
日期函数 | 说明 |
---|
WEEKDAY(date) | 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天) |
DAYOFWEEK(date) | 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) |
DAYOFMONTH(date) | 返回date是一月中的第几日(在1到31范围内) |
DAYOFYEAR(date) | 返回date是一年中的第几日(在1到366范围内) |
MONTH(date) | 返回date是一年中的第几日(在1到366范围内) |
DAYNAME(date) | 返回date是星期几(按英文名返回) |
MONTHNAME(date) | 返回date是几月(按英文名返回) |
QUARTER(date) | 返回date是一年的第几个季度 |
WEEK(date,first) | 返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始) |
YEAR(date) | 返回date的年份(范围在1000到9999) |
HOUR(time) | 返回time的小时数(范围是0到23) |
MINUTE(time) | 返回time的分钟数(范围是0到59) |
SECOND(time) | 返回time的秒数(范围是0到59) |
PERIOD_ADD(P,N) | 增加N个月到时期P并返回(P的格式YYMM或YYYYMM) |
PERIOD_DIFF(P1,P2) | 返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM) |
TO_DAYS(date) | 返回日期date是西元0年至今多少天(不计算1582年以前) |
FROM_DAYS(N) | 给出西元0年至今多少天返回DATE值(不计算1582年以前) |
DATE_FORMAT(date,format) | 根据format字符串格式化date值 |
TIME_FORMAT(time,format) | 和DATE_FORMAT()类似,但TIME_FORMAT只处理小时、分钟和秒(其余符号产生一个NULL值或0) |
CURDATE() 、CURRENT_DATE() | 以’YYYY-MM-DD’或YYYYMMDD格式返回当前日期值(根据返回值所处上下文是字符串或数字) |
CURTIME() 、CURRENT_TIME() | 以’HH:MM:SS’或HHMMSS格式返回当前时间值(根据返回值所处上下文是字符串或数字) |
NOW() 、SYSDATE() 、CURRENT_TIMESTAMP() | 以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回当前日期时间(根据返回值所处上下文是字符串或数字) |
UNIX_TIMESTAMP() 、UNIX_TIMESTAMP(date) | 返回一个Unix时间戳(从’1970-01-01 00:00:00’GMT开始的秒数,date默认值为当前时间) |
FROM_UNIXTIME(unix_timestamp) | 以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字) |
FROM_UNIXTIME(unix_timestamp,format) | 以format字符串格式返回时间戳的值 |
SEC_TO_TIME(seconds) | 以’HH:MM:SS’或HHMMSS格式返回秒数转成的TIME值(根据返回值所处上下文是字符串或数字) |
TIME_TO_SEC(time) | 返回time值有多少秒 |
代码示例:
select DAYOFWEEK('1998-02-03');
select WEEKDAY('1997-10-04 22:23:00');
select WEEKDAY('1997-11-05');
select DAYOFMONTH('1998-02-03');
select DAYOFYEAR('1998-02-03');
select MONTH('1998-02-03');
select DAYNAME("1998-02-05");
select MONTHNAME("1998-02-05");
select QUARTER('98-04-01');
select WEEK('1998-02-20');
select WEEK('1998-02-20',0);
select WEEK('1998-02-20',1);
select YEAR('98-02-03');
select HOUR('10:05:03');
select MINUTE('98-02-03 10:05:03');
select SECOND('10:05:03');
select PERIOD_ADD(9801,2);
select PERIOD_DIFF(9802,199703);
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND;
SELECT INTERVAL 1 DAY "1997-12-31";
SELECT "1998-01-01" - INTERVAL 1 SECOND;
SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);
SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);
SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);
SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND);
SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
SELECT EXTRACT(YEAR FROM "1999-07-02");
SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
select TO_DAYS(950501);
select TO_DAYS('1997-10-07');
select FROM_DAYS(729669);
select DATE_FORMAT('1997-10-04 22:23:00','%W %M %Y');
select DATE_FORMAT('1997-10-04 22:23:00','%H:%i:%s');
select DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');
select DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');
select CURDATE();
select CURDATE() 0;
select CURTIME();
select CURTIME() 0;
select NOW();
select NOW() 0;
select UNIX_TIMESTAMP();
select UNIX_TIMESTAMP('1997-10-04 22:23:00');
select FROM_UNIXTIME(875996580);
select FROM_UNIXTIME(875996580) 0;
select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');
select SEC_TO_TIME(2378);
select SEC_TO_TIME(2378) 0;
select TIME_TO_SEC('22:23:00');
select TIME_TO_SEC('00:39:38');