MYSQL函數

 

1、數值函數mysql

1.算術操做符sql

函數函數

說明unix

示例orm

+索引

加號字符串

exp:select 3+5;      result:8字符串處理

-數學

減號table

exp:select -3;       result:-3

*

乘號

exp:select 3*5;      result:15

/

除號

exp:select 3/5;      result:0.60

DIV

整數除法

exp:select 5 DIV 2;   result:2

2.數學函數

函數

說明

示例

ABS(X)

返回X的絕對值

mysql> SELECT ABS(2);

    -> 2

ACOS(X)

返回X的反餘弦。若X不在-1到1的範圍以內,則返回 NULL 。

mysql> SELECT ACOS(1);

    -> 0

ASIN(X)

返回X的反正弦。若X不在-1到1的範圍以內,則返回 NULL 。

mysql> SELECT ASIN(0.2);

    -> 0.20135792079033

ATAN(X)

返回X的反正切。

mysql> SELECT ATAN(2);

    -> 1.1071487177941

ATAN(Y,X), ATAN2(Y,X):

返回兩個變量X及Y以弧度表示的反正切。

擴展:雙變量反正切函數是座標原點爲起點,指向(x,y)的射線在座標平面上與x軸正方向之間的角的角度。

mysql> SELECT ATAN(-2,2);

    -> -0.78539816339745

mysql> SELECT ATAN2(PI(),0);

    -> 1.5707963267949

CEILING(X) CEIL(X)

返回不小於X 的最小整數值

mysql> SELECT CEILING(1.23);

    -> 2

mysql> SELECT CEIL(-1.23);

    -> -1

COS(X)

返回X 的餘弦

mysql> SELECT COS(PI());

    -> -1

COT(X)

返回X 的餘切

mysql> SELECT COT(12);

    -> -1.5726734063977

CRC32(expr)

計算循環冗餘碼校驗值並返回一個 32比特無符號值。若參數爲NULL ,則結果爲 NULL。該參數應爲一個字符串,並且在不是字符串的狀況下會被做爲字符串處理(如有可能)。

 

mysql> SELECT CRC32('MySQL');

    -> 3259397556

DEGREES(X)

把弧度被轉化爲度

mysql> SELECT DEGREES(PI());

    -> 180

EXP(X)

返回e的X乘方後的值(天然對數的底)

mysql> SELECT EXP(2);

    -> 7.3890560989307

FLOOR(X)

回不大於X的最大整數值

mysql> SELECT FLOOR(1.23);

    -> 1

FORMAT(X,D)

將數字X 的格式寫成'#,###,###.##'格式, 即保留小數點後 D位,而第D位的保留方式爲四捨五入,而後將結果以字符串的形式返回。

 mysql> SELECT FORMAT(12332.123456, 4);

     -> '12,332.1235'

LN(X)

返回X的天然對數,即X相對於基數e的對數。

mysql> SELECT LN(2);

    -> 0.69314718055995

LOG(X) LOG(B,X)

若用一個參數調用,這個函數就會返回X的天然對數。

若用兩個參數進行調用,這個函數會返回X對於任意基數B的對數。

LOG(B,X) 就至關於 LOG(X) / LOG(B)。

mysql> SELECT LOG(2);

-> 0.69314718055995

mysql> SELECT LOG(10,100);

    -> 2

LOG2(X)

返回X 的基數爲2的對數。

對於查出存儲一個數字須要多少個比特,LOG2()很是有效。這個函數至關於表達式 LOG(X) / LOG(2)。

mysql> SELECT LOG2(65536);

    -> 16

LOG10(X)

返回X的基數爲10的對數。

LOG10(X)至關於LOG(10,X)。

mysql> SELECT LOG10(100);

    -> 2

MOD(N,M),

N % M,

N MOD M

模操做。返回N 被 M除後的餘數。

MOD() 對於帶有小數部分的數值也起做用, 它返回除法運算後的精確餘數:

mysql> SELECT MOD(234, 10);

-> 4

mysql> SELECT 253 % 7;

    -> 1

mysql> SELECT MOD(34.5,3);

    -> 1.5

 

PI()

返回 ϖ (pi)的值。默認的顯示小數位數是7位,然而 MySQL內部會使用徹底雙精度值。

mysql> SELECT PI();

    -> 3.141593

mysql> SELECT PI()+0.000000000000000000;

    -> 3.141592653589793116

POW(X,Y) , POWER(X,Y)

返回X 的Y乘方的結果值。

mysql> SELECT POW(2,2);

    -> 4

mysql> SELECT POW(2,-2);

    -> 0.25

RADIANS(X)

返回由度轉化爲弧度的參數 X,  (注意 ϖ 弧度等於180度)。

mysql> SELECT RADIANS(90);

    -> 1.5707963267949

RAND() RAND(N)

返回一個隨機浮點值 v ,範圍在 0 到1 之間 (即, 其範圍爲 0 ≤ v ≤ 1.0)。若已指定一個整數參數 N ,則它被用做種子值,用來產生重複序列。

若要在i ≤ R ≤ j 這個範圍獲得一個隨機整數R ,須要用到表達式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的範圍(包括7和12)內獲得一個隨機整數, 可以使用如下語句:

SELECT FLOOR(7 + (RAND() * 6));

注意,在WHERE語句中,WHERE每執行一次, RAND()就會被再計算一次。

mysql> SELECT RAND();

    -> 0.9233482386203

mysql> SELECT RAND(20);

    -> 0.15888261251047

mysql> SELECT RAND(20);

    -> 0.15888261251047

mysql> SELECT RAND();

    -> 0.63553050033332

ROUND(X) ROUND(X,D)

返回參數X, 其值接近於最近似的整數。在有兩個參數的狀況下,返回 X ,其值保留到小數點後D位,而第D位的保留方式爲四捨五入。若要接保留X值小數點左邊的D 位,可將 D 設爲負值。

mysql> SELECT ROUND(-1.23);

    -> -1

mysql> SELECT ROUND(-1.58);

    -> -2

mysql> SELECT ROUND(1.58);

    -> 2

mysql> SELECT ROUND(1.298, 1);

    -> 1.3

mysql> SELECT ROUND(23.298, -1);

    -> 20

SIGN(X)

返回參數做爲-一、 0或1的符號,該符號取決於X 的值爲負、零或正。

mysql> SELECT SIGN(-32);

    -> -1

mysql> SELECT SIGN(0);

    -> 0

mysql> SELECT SIGN(234);

    -> 1

SIN(X)

返回X 正弦,其中 X 在弧度中被給定。

mysql> SELECT SIN(PI());

    -> 1.2246063538224e-16

SQRT(X)

返回非負數X 的二次方根。

mysql> SELECT SQRT(4);

    -> 2

TAN(X)

返回X 的正切,其中X 在弧度中被給定。

mysql> SELECT TAN(PI());

    -> -1.2246063538224e-16

TRUNCATE(X,D)

返回被捨去至小數點後D位的數字X。若D 的值爲 0, 則結果不帶有小數點或不帶有小數部分。能夠將D設爲負數,若要截去(歸零) X小數點左起第D位開始後面全部低位的值.

mysql> SELECT TRUNCATE(1.223,1);

    -> 1.2

mysql> SELECT TRUNCATE(1.999,1);

    -> 1.9

mysql> SELECT TRUNCATE(1.999,0);

    -> 1

mysql> SELECT TRUNCATE(-1.999,1);

    -> -1.9

mysql> SELECT TRUNCATE(122,-2);

    -> 100

mysql> SELECT TRUNCATE(10.28*100,0);

    -> 1028

 

2、日期和時間函數

函數

說明

示例

ADDDATE(date,INTERVAL expr type)

ADDDATE(expr,days)

計算其實日期d加上n天的日期。

當被第二個參數的INTERVAL格式激活後, ADDDATE()就是DATE_ADD()的同義詞。相關函數SUBDATE() 則是DATE_SUB()的同義詞。

若 days 參數只是整數值,則 MySQL 5.1將其做爲天數值添加至 expr。

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'

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'

CONVERT_TZ(dt,from_tz,to_tz)

CONVERT_TZ() 將時間日期值dt 從from_tz 給出的時區轉到to_tz給出的時區,而後返回結果值。

mysql>SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');

    -> '2004-01-01 13:00:00'

mysql>SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');

    -> '2004-01-01 22:00:00'

CURDATE()

CURRENT_DATE

將當前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具體格式根據函數用在字符串或是數字語境中而定。

mysql> SELECT CURDATE();

    -> '1997-12-15'

mysql> SELECT CURDATE() + 0;

    -> 19971215

CURTIME()

CURRENT_TIME()

將當前時間以'HH:MM:SS'或 HHMMSS 的格式返回, 具體格式根據函數用在字符串或是數字語境中而定。

mysql> SELECT CURTIME();

    -> '23:50:26'

mysql> SELECT CURTIME() + 0;

    -> 235026

CURRENT_TIMESTAMP(),

NOW(),

LOCALTIME(),

LOCALTIMESTAMP(),

返回當前日期和時間值,其格式爲 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具體格式取決於該函數是否用在字符串中或數字語境中。

mysql> SELECT NOW();
    ->2014-12-17 15:59:02

DATE(expr)

提取日期或時間日期表達式expr中的日期部分。

mysql> SELECT DATE('2003-12-31 01:02:03');

    -> '2003-12-31'

DATEDIFF(expr,expr2)

DATEDIFF() 返回起始時間 expr和結束時間expr2之間的天數。Expr和expr2 爲日期或 date-and-time 表達式。計算中只用到這些值的日期部分。

mysql>SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');

    -> 1

mysql>SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');

    -> -31

DATE_ADD(date,INTERVAL expr type)

 DATE_SUB(date,INTERVAL expr type)

這些函數執行日期運算。 date 是一個 DATETIME 或DATE值,用來指定起始時間。 expr 是一個表達式,用來指定從起始日期添加或減去的時間間隔值。  Expr是一個字符串;對於負值的時間間隔,它能夠以一個 ‘-’開頭。 type 爲關鍵詞,它指示了表達式被解釋的方式。

若 date 參數是一個 DATE 值,而你的計算只會包括 YEAR、MONTH和DAY部分(即, 沒有時間部分), 其結果是一個DATE 值。不然,結果將是一個 DATETIME值。

若位於另外一端的表達式是一個日期或日期時間值 , 則INTERVAL expr type只容許在 + 操做符的兩端。對於 –操做符,  INTERVAL expr type 只容許在其右端,緣由是從一個時間間隔中提取一個日期或日期時間值是毫無心義的。

假如你對一個日期值添加或減去一些含有時間部分的內容,則結果自動轉化爲一個日期時間值:

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 DATE_ADD('1992-12-31 23:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND);

-> '1993-01-01 00:00:01.000001'

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);

    -> '1999-01-01 01:00:00'

DATE_FORMAT(date,format)

根據format 字符串安排date 值的格式。

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()

DAYOFMONTH()

返回date 對應的該月日期,範圍是從 1到31。

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

    -> 3

DAYNAME(date)

返回date 對應的工做日名稱。

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

    -> '週四'

DAYOFWEEK(date)

返回date (1 = 週日, 2 = 週一, ..., 7 = 週六)對應的工做日索引。

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

    -> 3

DAYOFYEAR(date)

返回date 對應的一年中的天數,範圍是從 1到366。

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

    -> 34

EXTRACT(type FROM date)

從日期中提取其部分

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值。

使用 FROM_DAYS()處理古老日期時,務必謹慎。他不用於處理陽曆出現前的日期(1582)。

mysql> SELECT FROM_DAYS(729669);

    -> '1997-10-07'

FROM_UNIXTIME(unix_timestamp),

FROM_UNIXTIME(unix_timestamp,

format)

返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的unix_timestamp參數表示,具體格式取決於該函數是否用在字符串中或是數字語境中。

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()函數結合時頗有用。

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'

HOUR(time)

返回time 對應的小時數。對於日時值的返回值範圍是從 0 到 23 。

然而,  TIME 值的範圍實際上很是大, 因此HOUR能夠返回大於23的值。

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

    -> 10

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

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'

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');

    -> 2

SECOND(time)

返回time 對應的秒數, 範圍是從 0到59。

mysql> SELECT SECOND('10:05:03');

    -> 3

SEC_TO_TIME(seconds)

返回被轉化爲小時、 分鐘和秒數的seconds參數值, 其格式爲 'HH:MM:SS' 或HHMMSS

mysql> SELECT SEC_TO_TIME(2378);

    -> '00:39:38'

mysql> SELECT SEC_TO_TIME(2378) + 0;

    -> 3938

STR_TO_DATE(str,format)

這是DATE_FORMAT() 函數的倒轉。它獲取一個字符串 str 和一個格式字符串format。若格式字符串包含日期和時間部分,則 STR_TO_DATE()返回一個 DATETIME 值, 若該字符串只包含日期部分或時間部分,則返回一個 DATE 或TIME值。

str所包含的日期、時間或日期時間值應該在format指示的格式中被給定。對於可用在format中的說明符,請參見DATE_FORMAT() 函數說明表。 全部其它的字符被逐字獲取,所以不會被解釋。若 str 包含一個非法日期、時間或日期時間值,則 STR_TO_DATE()返回NULL。同時,一個非法值會引發警告。

mysql> SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y');

    -> '0000-00-00'

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');

    -> '2004-04-31'

SUBDATE(date,INTERVAL expr type)

SUBDATE(expr,days)

當被第二個參數的 INTERVAL型式調用時, SUBDATE()和DATE_SUB()的意義相同。

第二個形式容許對days使用整數值。在這些狀況下,它被算做由日期或日期時間表達式 expr中提取的天數。

mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);

-> '1997-12-02'

mysql> SELECT SUBDATE('1998-01-02 12:00:00', 31);

    -> '1997-12-02 12:00:00'

SUBTIME(expr,expr2)

SUBTIME()從expr 中提取expr2 ,而後返回結果。expr 是一個時間或日期時間表達式,而expr2 是一個時間表達式。

mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');

    -> '1997-12-30 22:58:58.999997'

mysql> SELECT SUBTIME('01:00:00.999999', '02:00:00.999998');

    -> '-00:59:59.999999'

SYSDATE()

返回當前日期和時間值,格式爲'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS, 具體格式根據函數是否用在字符串或數字語境而定。

在一個存儲程序或觸發器中, SYSDATE()返回其執行的時間。這個NOW()的運做有所不一樣。

 

TIME(expr)

提取一個時間或日期時間表達式的時間部分,並將其以字符串形式返回。

mysql> SELECT TIME('2003-12-31 01:02:03');

    -> '01:02:03'

mysql> SELECT TIME('2003-12-31 01:02:03.000123');

    -> '01:02:03.000123'

TIMEDIFF(expr,expr2)

TIMEDIFF() 返回起始時間 expr 和結束時間expr2 之間的時間。 expr 和expr2 爲時間或 date-and-time 表達式,兩個的類型必須同樣

mysql> SELECT TIMEDIFF('2000:01:01 00:00:00','2000:01:01 00:00:00.000001');

    -> '-00:00:00.000001'

mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001', '1997-12-30 01:01:01.000002');

    -> '46:58:57.999999'

TIMESTAMP(expr) , TIMESTAMP(expr,expr2)

對於一個單參數,該函數將日期或日期時間表達式 expr 做爲日期時間值返回。對於兩個參數, 它將時間表達式 expr2 添加到日期或日期時間表達式 expr 中,將theresult做爲日期時間值返回。

mysql> SELECT TIMESTAMP('2003-12-31');

    -> '2003-12-31 00:00:00'

mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');

    -> '2004-01-01 00:00:00'

TIMESTAMPADD(interval,

int_expr,datetime_expr)

將整型表達式int_expr 添加到日期或日期時間表達式 datetime_expr中。 int_expr 的單位被時間間隔參數給定,該參數必須是如下值的其中一個: FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR。

可以使用所顯示的關鍵詞指定Interval值,或使用SQL_TSI_前綴。例如, DAY或SQL_TSI_DAY 都是正確的。

mysql>SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');

    -> '2003-01-02 00:01:00'

mysql>SELECT TIMESTAMPADD(WEEK,1,'2003-01-02');

    -> '2003-01-09'

TIMESTAMPDIFF(interval,

datetime_expr1,datetime_expr2)

返回日期或日期時間表達式datetime_expr1 和datetime_expr2the 之間的整數差。其結果的單位由interval 參數給出。interval 的法定值同TIMESTAMPADD()函數說明中所列出的相同。

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');

    -> 3

mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');

    -> -1

TIME_FORMAT(time,format)

其使用和 DATE_FORMAT()函數相同, 然而format 字符串可能僅會包含處理小時、分鐘和秒的格式說明符。其它說明符產生一個NULL值或0。

若time value包含一個大於23的小時部分,則 %H 和 %k 小時格式說明符會產生一個大於0..23的一般範圍的值。另外一個小時格式說明符產生小時值模數12。

mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');

    -> '100 100 04 04 4'

TIME_TO_SEC(time)

返回已轉化爲秒的time參數。

mysql> SELECT TIME_TO_SEC('22:23:00');

    -> 80580

mysql> SELECT TIME_TO_SEC('00:39:38');

    -> 2378

TO_DAYS(date)

給定一個日期date, 返回一個天數 (從年份0開始的天數 )。

不用於陽曆出現(1582)前的值,緣由是當日歷改變時,遺失的日期不會被考慮在內。

對於1582 年以前的日期(或許在其它地區爲下一年 ), 該函數的結果實不可靠的。

mysql> SELECT TO_DAYS(950501);

    -> 728779

mysql> SELECT TO_DAYS('1997-10-07');

-> 729669

mysql> SELECT TO_DAYS('1997-10-07'), TO_DAYS('97-10-07');

    -> 729669, 729669

UNIX_TIMESTAMP(),

UNIX_TIMESTAMP(date)

若無參數調用,則返回一個Unix timestamp ('1970-01-01 00:00:00' GMT 以後的秒數) 做爲無符號整數。若用date 來調用UNIX_TIMESTAMP(),它會將參數值以'1970-01-01 00:00:00' GMT後的秒數的形式返回。date 能夠是一個DATE 字符串、一個 DATETIME字符串、一個 TIMESTAMP或一個當地時間的YYMMDD 或YYYMMDD格式的數字。

假如你向UNIX_TIMESTAMP()傳遞一個溢出日期,它會返回 0,但請注意只有基本範圍檢查會被履行 (年份從1970 到 2037, 月份從01到12,日期從  01 到31)。

mysql> SELECT UNIX_TIMESTAMP();

    -> 882226357

mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');

    -> 875996580

UTC_DATE

返回當前 UTC日期值,其格式爲 'YYYY-MM-DD' 或 YYYYMMDD,具體格式取決於函數是否用在字符串或數字語境中。

mysql> SELECT UTC_DATE(), UTC_DATE() + 0;

    -> '2003-08-14', 20030814

UTC_TIME

返回當前 UTC 值,其格式爲  'HH:MM:SS' 或HHMMSS,具體格式根據該函數是否用在字符串或數字語境而定。

mysql> SELECT UTC_TIME(), UTC_TIME() + 0;

    -> '18:07:53', 180753

UTC_TIMESTAMP

返回當前UTC日期及時間值,格式爲 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS,具體格式根據該函數是否用在字符串或數字語境而定。

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;

    -> '2003-08-14 18:08:04', 20030814180804

WEEK(date[,mode])

該函數返回date 對應的星期數。WEEK() 的雙參數形式容許你指定該星期是否起始於週日或週一, 以及返回值的範圍是否爲從0 到53 或從1 到53。若 mode參數被省略,則使用default_week_format系統自變量的值。

mysql> SELECT WEEK('1998-02-20');

    -> 7

mysql> SELECT WEEK('1998-02-20',0);

    -> 7

mysql> SELECT WEEK('1998-02-20',1);

    -> 8

mysql> SELECT WEEK('1998-12-31',1);

    -> 53

 

0: 星期天     0-53     遇到本年的第一個星期天開始,是第一週,前面的計算爲第0周。

1: 星期一     0-53     假如第一週能超過3天,那麼計算爲本年的第一週。不然爲第0周。

2: 星期天     1-53     遇到本年的第一個星期天開始,是第一週。前面的計算爲上年度的第5x周。

3: 星期一     1-53     假如第一週能超過3天,那麼計算爲本年的第一週。不然爲上年度的第5x周。

4: 星期天     0-53     假如第一週能超過3天,那麼計算爲本年的第一週。不然爲第0周。

5: 星期一     0-53     遇到本年的第一個星期一開始,是第一週。前面的計算爲第0周。

6: 星期天     1-53     假如第一週能超過3天,那麼計算爲本年的第一週。不然爲上年度的第5x周。

7: 星期一     1-53     遇到本年的第一個星期一開始,是第一週。前面的計算爲上年度的第5x周。

 

注意,假若有一個日期位於前一年的最後一週, 若你不使用二、三、6或7做爲mode 參數選擇,則MySQL返回 0:

mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);

    -> 2000, 0

 

假如你更但願所計算的關於年份的結果包括給定日期所在周的第一天,則應使用 0、二、5或 7 做爲mode參數選擇。

mysql> SELECT WEEK('2000-01-01',2);

    -> 52

WEEKDAY(date)

回date (0 = 週一, 1 = 週二, ... 6 = 週日)對應的工做日索引

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');

    -> 1

mysql> SELECT WEEKDAY('1997-11-05');

    -> 2

WEEKOFYEAR(date)

將該日期的陽曆周以數字形式返回,範圍是從1到53。它是一個兼容度函數,至關於WEEK(date,3)。

mysql> SELECT WEEKOFYEAR('1998-02-20');

    -> 8

YEAR(date)

返回date 對應的年份,範圍是從1000到9999。

mysql> SELECT YEAR('98-02-03');

    -> 1998

YEARWEEK(date),

YEARWEEK(date,start)

返回一個日期對應的年或周。start參數的工做同 start參數對 WEEK()的工做相同。

mysql> SELECT YEARWEEK('1987-01-01');

    -> 198653

相關文章
相關標籤/搜索