企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 时期时间函数 * * * * * #### DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) ~~~ mysql> select DAYOFWEEK('1998-02-03');   -> 3 ~~~ #### WEEKDAY(date)  返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 ~~~ mysql> select WEEKDAY('1997-10-04 22:23:00');   -> 5 mysql> select WEEKDAY('1997-11-05');   -> 2 ~~~ #### DAYOFMONTH(date)  返回date是一月中的第几日(在1到31范围内) ~~~ mysql> select DAYOFMONTH('1998-02-03');   -> 3 ~~~ #### DAYOFYEAR(date)  返回date是一年中的第几日(在1到366范围内) ~~~ mysql> select DAYOFYEAR('1998-02-03');   -> 34 ~~~ #### MONTH(date)  返回date中的月份数值 ~~~ mysql> select MONTH('1998-02-03');   -> 2 ~~~ #### DAYNAME(date)  返回date是星期几(按英文名返回) ~~~ mysql> select DAYNAME("1998-02-05");   -> 'Thursday' ~~~ #### MONTHNAME(date)  返回date是几月(按英文名返回) ~~~ mysql> select MONTHNAME("1998-02-05");   -> 'February' ~~~ #### QUARTER(date)  返回date是一年的第几个季度 ~~~ mysql> select QUARTER('98-04-01');   -> 2 ~~~ #### WEEK(date,first)  返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始) ~~~ mysql> select WEEK('1998-02-20');   -> 7 mysql> select WEEK('1998-02-20',0);   -> 7 mysql> select WEEK('1998-02-20',1);   -> 8 ~~~ #### YEAR(date)  返回date的年份(范围在1000到9999) ~~~ mysql> select YEAR('98-02-03');   -> 1998 ~~~ #### HOUR(time)  返回time的小时数(范围是0到23) ~~~ mysql> select HOUR('10:05:03');   -> 10 ~~~ #### MINUTE(time)  返回time的分钟数(范围是0到59) ~~~ mysql> select MINUTE('98-02-03 10:05:03');   -> 5 ~~~ #### SECOND(time)  返回time的秒数(范围是0到59) ~~~ mysql> select SECOND('10:05:03');   -> 3 ~~~ #### PERIOD_ADD(P,N)  增加N个月到时期P并返回(P的格式YYMM或YYYYMM) ~~~ mysql> select PERIOD_ADD(9801,2);   -> 199803 ~~~ #### PERIOD_DIFF(P1,P2)  返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM) ~~~ mysql> select PERIOD_DIFF(9802,199703);   -> 11 ~~~ 对日期时间进行加减法运算 #### DATE_ADD(date,INTERVAL expr type) ~~~ mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);   -> 1998-01-01 00:00:00 mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);   -> 1998-01-01 23:59:59 mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);   -> 1998-01-01 00:01:00 ~~~ #### DATE_SUB(date,INTERVAL expr type) ~~~ mysql> SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND);   -> 1997-12-30 22:58:59 mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);   -> 1997-12-02 ~~~ #### ADDDATE(date,INTERVAL expr type) #### SUBDATE(date,INTERVAL expr type) > (ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词,也可以用运算符+和-而不是函数 ~~~ mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;   -> 1998-01-01 00:00:00 mysql> SELECT INTERVAL 1 DAY + "1997-12-31";   -> 1998-01-01 mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;   -> 1997-12-31 23:59:59 mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);   -> 1997-12-30 14:00:00 ~~~ > date - 是一个DATETIME或DATE值, > expr - 对date进行加减法的表达式字符串 > type - 指明表达式expr应该如何被解释 type值 含义/期望的expr格式: *  SECOND 秒 SECONDS *  MINUTE 分钟 MINUTES *  HOUR 时间 HOURS *  DAY 天 DAYS *  MONTH 月 MONTHS *  YEAR 年 YEARS *  MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" *  HOUR_MINUTE 小时和分钟 "HOURS:MINUTES" *  DAY_HOUR 天和小时 "DAYS HOURS" *  YEAR_MONTH 年和月 "YEARS-MONTHS" *  HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS" *  DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES" *  DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS" > expr中允许任何标点做分隔符, > 如果所有是DATE值时结果是一个DATE值,否则结果是一个DATETIME值) > 如果type关键词不完整,则MySQL从右端取值,DAY_SECOND因为缺少小时分钟等于MINUTE_SECOND) > 如果增加MONTH、YEAR_MONTH或YEAR,天数大于结果月份的最大天数则使用最大天数) #### SEC_TO_TIME(seconds)  以'HH:MM:SS'或HHMMSS格式返回秒数转成的TIME值(根据返回值所处上下文是字符串或数字) ~~~ mysql> select SEC_TO_TIME(2378);   -> '00:39:38' mysql> select SEC_TO_TIME(2378) + 0;   -> 3938 ~~~ #### TIME_TO_SEC(time)  返回time值有多少秒 ~~~ mysql> select TIME_TO_SEC('22:23:00');   -> 80580 mysql> select TIME_TO_SEC('00:39:38');   -> 2378 ~~~ #### FROM_UNIXTIME(unix_timestamp)  以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字) ~~~ mysql> select FROM_UNIXTIME(875996580);   -> '1997-10-04 22:23:00' mysql> select FROM_UNIXTIME(875996580) + 0;   -> 19971004222300 ~~~ #### FROM_UNIXTIME(unix_timestamp,format)  以format字符串格式返回时间戳的值 ~~~ mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');   -> '1997 23rd December 03:43:30 x' ~~~ #### UNIX_TIMESTAMP() UNIX_TIMESTAMP(date)  返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间) ~~~ mysql> select UNIX_TIMESTAMP();   -> 882226357 mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');   -> 875996580 ~~~