MySQL日期時間函數大全
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)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
對日期時間進行加減法運算
(ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同義詞,也可以用運算符和-而不是函數
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,天數大於結果月份的最大天數則使用最大天數)
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("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
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_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02 ", INTERVAL 31 DAY);
-> 1997-12-02
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
TO_DAYS(date)
返回日期date是西元0年至今多少天(不計算1582年以前)
mysql> select TO_DAYS(950501);
-> 728779
mysql> select TO_DAYS('1997-10-07');
-> 729669
FROM_DAYS(N)
給出西元0年至今多少天返回DATE值(不計算1582年以前)
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
DATE_FORMAT(date,format)
根據format字符串格式化date值
(在format字符串中可用標誌符: