1、字符串函数
$ B, w- n; Q- Q5 _, M! xascii(str) % T5 N/ f: P) S+ w5 r3 R6 u
返回字符串str的第一个字符的ascii值(str是空串时返回0)
) Y, b* s$ B8 Tmysql> select ascii('2');
3 O* s3 E0 b, X# Z* T3 b -> 50
1 _) s6 ^7 m( {( wmysql> select ascii(2); - T+ q& A( k, J8 c) _1 g: j
-> 50
) _1 _' U; Z: M' x" Lmysql> select ascii('dete'); ) r# u" G+ L/ X' e- ~" F6 E
-> 100
8 L% e8 @" R. _7 N$ s5 C- _3 Z# d4 F3 ] xord(str)
0 N* ~- p2 x* w+ m( _2 {如果字符串str句首是单字节返回与ascii()函数返回的相同值。5 s* Z/ w8 r. d% g; q: W1 D
4 V1 }, a) B1 |" Q; D' f7 m! v
如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode...] 4 _2 C- x! b) t; {8 G2 o
mysql> select ord('2');
! C% s3 j4 C) }4 o -> 50
+ b# s% C3 h I" S( U" w; q & K% b; D6 X+ u. ?
conv(n,from_base,to_base)
: ?' Z# A5 K' D" _/ e3 D对数字n进制转换,并转换为字串返回(任何参数为null时返回null,进制范围为2-36进制,当to_base是负数时n作为有符号数否则作无符号数,conv以64位点精度工作)
; P& [8 ]5 g" v' g7 s: `* hmysql> select conv("a",16,2); " H V! O: R+ P) b' R$ [7 f
-> '1010' 8 U$ {' T+ m# Y& y
mysql> select conv("6e",18,8); * q$ B: U5 D, ~
-> '172'
* k' u8 M5 O# J3 I+ amysql> select conv(-17,10,-18);
' {) O, m- U& D* t; B7 P4 F -> '-h' 0 v; r% ^0 Z3 f/ ]- B2 h' l
mysql> select conv(10+"10"+'10'+0xa,10,10); # \) a) p( R" A2 v
-> '40' 7 O9 e! G$ [1 N: l
( B; z0 y1 o3 D7 d, n& ^
bin(n) 1 r- u: ]0 B2 K( X$ J
把n转为二进制值并以字串返回(n是bigint数字,等价于conv(n,10,2)) $ }1 b, c# q& R4 A4 G
mysql> select bin(12);
) Z7 A6 ?4 l; [ -> '1100' 4 R8 d5 P+ l7 l7 G Q; @1 s, l1 V
8 f) X" N! E- @/ `
oct(n)
( f' L4 h% z4 i8 J V' Y把n转为八进制值并以字串返回(n是bigint数字,等价于conv(n,10,8))
d: g9 n" g- l+ X$ h4 {mysql> select oct(12); * M" \; ]4 m) A. a T
-> '14' # b; z. j" ]9 B5 s1 `& `4 z4 i
' Y$ A% b$ M) i2 {7 c5 ~3 Uhex(n) 4 p7 N0 g" G8 F
把n转为十六进制并以字串返回(n是bigint数字,等价于conv(n,10,16))
# o" L% N, ]( c$ m) m1 F* ~mysql> select hex(255);
2 |3 t' ?2 h7 j1 g, E" D5 j -> 'ff' 6 s0 T! z7 f. E7 J; ]9 S0 \
$ l8 `9 s2 E E- V) {5 }) n: B
char(n,...) . y, o' c) Z7 Q6 f9 s
返回由参数n,...对应的ascii代码字符组成的一个字串(参数是n,...是数字序列,null值被跳过)
4 d3 a2 j2 B( }mysql> select char(77,121,83,81,'76');
1 U. ?6 o3 G# u l. p7 E: x) R, p" d -> 'mysql' , o- a' ]9 e0 o8 T& @
mysql> select char(77,77.3,'77.3'); ! G$ i" X/ k% b$ }# |
-> 'mmm' ( @# [, G( z; M( ?% J T) x
. \1 d l3 O' M$ X: j6 ]
concat(str1,str2,...)
# O0 J" {/ \, T$ c把参数连成一个长字符串并返回(任何参数是null时返回null) % g4 \& V% l& W8 g8 R
mysql> select concat('my', 's', 'ql'); / v( n6 A6 H( Z7 k
-> 'mysql'
: k& Z7 _% r7 g/ Y0 s. M) R% a% amysql> select concat('my', null, 'ql');
3 p9 g5 H+ n! Y u c, z9 Z; i -> null : L. F4 W$ Y% s( e
mysql> select concat(14.3); ) s7 N& W2 T0 t0 ?9 n! z: a
-> '14.3' 5 c* a" \; z& A% k
; {1 Q! V% l' F7 b! z+ @ g6 C/ rlength(str) ' j* p7 M' p% l/ C, j8 t4 N
octet_length(str) 3 z8 G3 I5 {3 K$ [+ d2 ?
char_length(str) 6 ^- J' R4 ?; |. ^5 T, ?* j% B' { {
character_length(str) - o( F" ?8 S- K' w, P
返回字符串str的长度(对于多字节字符char_length仅计算一次)/ b- P8 T i+ Q% K
mysql> select length('text');
9 x" {0 j1 J" e+ V -> 4
8 V" H! Y' q) t2 d6 A6 ~4 _0 [9 Ymysql> select octet_length('text');
1 t' S5 N; b. G6 ~- I5 t3 g -> 4 1 S, [, f3 J8 Q! p8 A
9 L" Z4 S( ? @
locate(substr,str) ! k2 H( v/ O) k M
position(substr in str) 6 v0 z0 Q( ^- j$ t4 Y
返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
6 s' U# t& \9 g6 h6 J' ^mysql> select locate('bar', 'foobarbar');
! V- K0 z7 B' m -> 4 5 J% X9 f) u5 t4 l4 C3 Z. V) F) s
mysql> select locate('xbar', 'foobar'); 5 C, i6 R. ]0 Y/ R1 r4 i
-> 0
' ?# ~% l) [0 e/ D0 D: H , b: A9 I5 j. i" m
locate(substr,str,pos)
+ z: N6 L+ \2 _1 x# r返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)
9 x/ a8 _0 a( P$ P# O& Qmysql> select locate('bar', 'foobarbar',5);
. S: s2 b0 C1 k2 z4 a -> 7
+ F+ { ]: u0 t $ ]/ Y! H8 r2 ]5 m6 ^4 n9 {
instr(str,substr) ' g) L6 Y8 P! Z- W" m
返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0) 2 N9 |3 ^8 [& f5 F3 O. T3 `. m
mysql> select instr('foobarbar', 'bar'); ; B: H; E5 f: |& v8 j2 J* g
-> 4
* o& M* N d. S6 ?5 Tmysql> select instr('xbar', 'foobar');
$ s, M4 c! k; V" s9 N/ B2 G9 K) s. y -> 0
! w3 l1 Q+ Y2 l- Y, g; w: Z+ @
* T- }" E7 ?5 x- b( H7 Llpad(str,len,padstr) $ M' q3 X& R$ U3 {' a% v+ B
用字符串padstr填补str左端直到字串长度为len并返回
9 s' b& V1 ^$ I8 K$ h2 X ?+ @8 ?mysql> select lpad('hi',4,'??');
T$ P$ @7 t. [2 L -> '??hi' - u3 E( ^9 C0 \ s' b6 s- b
}* s2 }+ R5 f; i1 K0 D. B$ I; [9 W
rpad(str,len,padstr) ' u4 q) z: z* i' h3 c
用字符串padstr填补str右端直到字串长度为len并返回
- n% [0 H' U+ r& b7 Kmysql> select rpad('hi',5,'?');
* n- [0 L) m* A c- ~ -> 'hi???'
! G" w) j8 R6 k" m: }; Z
' b Z& K8 H5 G0 Y9 [3 m$ |left(str,len) 8 f! E- y, |" z8 [4 N U" y2 B
返回字符串str的左端len个字符
9 J1 [& ^# r" I% Y7 [3 R, xmysql> select left('foobarbar', 5); 2 {- H/ Z7 W6 \- k3 A1 |
-> 'fooba'
- V$ e$ c7 P( X3 G ; n. J2 o& s% {5 P- v% V+ q
right(str,len)
/ Y- r6 X7 ]7 E' k( X返回字符串str的右端len个字符
$ ^. a9 u. S2 u' @9 c8 ]mysql> select right('foobarbar', 4);
: b- M4 C1 D! s( x -> 'rbar'
6 p6 A" b) ~1 n! O7 i& [5 p
) E R. a0 M! Lsubstring(str,pos,len)
+ g- z9 H# G! }+ C. qsubstring(str from pos for len)
) \+ j5 {- @: }6 t# C. h# Rmid(str,pos,len)
2 a; d! ~: b# J返回字符串str的位置pos起len个字符mysql> select substring('quadratically',5,6); # G% n0 { J4 q7 {$ u
-> 'ratica' 2 b* [- R# |0 J9 k6 q9 N
3 U7 L8 T l1 _0 Y/ xsubstring(str,pos)
2 i, _. N0 n1 G! U1 Q* esubstring(str from pos)
3 W. p: r; e3 A返回字符串str的位置pos起的一个子串
) ~1 P0 f+ z' g }* Q! \3 y$ ~5 ~mysql> select substring('quadratically',5);
# o: ?' E! P- n# ] D. ^ -> 'ratically' . a: [2 `, d1 U
mysql> select substring('foobarbar' from 4); ' B. w0 E! W q; B
-> 'barbar' 5 M- b1 n+ c! |# w+ f5 }7 D! F
; j: \2 C- P+ T# M( c. k
substring_index(str,delim,count)
) b& _ Q8 w5 h返回从字符串str的第count个出现的分隔符delim之后的子串
1 n- N' O* ?& M; k4 c6 J(count为正数时返回左端,否则返回右端子串)
+ ^' P$ ]* b; q7 O& O. z" Mmysql> select substring_index('www.mysql.com', '.', 2);
/ v9 N/ ]/ U" o8 t -> 'www.mysql' * h3 b ?& x, W" D2 k
mysql> select substring_index('www.mysql.com', '.', -2);
! F' [. f1 k% H% a -> 'mysql.com' $ k4 A5 s+ |, u% b6 X, d/ s4 w/ G; D
6 i1 ]8 B& m$ u# B$ a0 r
ltrim(str)
: y4 }5 L5 e+ n返回删除了左空格的字符串str 3 z: d* X2 n) V1 b
mysql> select ltrim(' barbar'); * c" {. C" b6 n
-> 'barbar' ( w3 \+ m8 |) K; m7 g& g$ G
8 t. q! l; @ k i
rtrim(str)
0 n; F" i% V7 H3 f' P返回删除了右空格的字符串str
) q7 z0 w7 H O: h* S+ Emysql> select rtrim('barbar '); % [ x, T! z& Y
-> 'barbar'
# N7 p$ {0 b" ^6 L, p$ l& h
: _( H/ f4 o8 o4 K$ i$ c6 Ctrim([[both | leading | trailing] [remstr] from] str) & x$ O& l2 f7 M+ ~; S9 B' Z4 a
返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)
# i8 t+ x& Q/ q8 l* ] w; amysql> select trim(' bar ');
' v8 S* o3 b: j& s -> 'bar'
2 X; ~; ~4 Y/ Dmysql> select trim(leading 'x' from 'xxxbarxxx');
- g9 Q5 Q% M/ g' b8 @ -> 'barxxx'
! x: w6 A7 Q$ l @3 w- s; Rmysql> select trim(both 'x' from 'xxxbarxxx'); + i2 X+ H6 h) ^/ Z4 n
-> 'bar'
( v8 T2 ~& U! Gmysql> select trim(trailing 'xyz' from 'barxxyz');
8 l+ H+ b9 v- h -> 'barx' 1 W6 E" p2 O/ h/ m8 c
" \* [( c; M7 D; t
soundex(str)
; p& e$ C4 x: r! b返回str的一个同音字符串(听起来“大致相同”字符串有相同的+ M) J |, o) W# e6 L" @% ^5 |
同音字符串,非数字字母字符被忽略,在a-z外的字母被当作元音)
4 v( D. {8 W; G2 Fmysql> select soundex('hello');
F, L/ D( x, G& o* L0 t7 R1 S: N& m -> 'h400' 9 b2 O: v/ f2 b' r; }% L4 C4 E
mysql> select soundex('quadratically');
, {5 e; A4 K: F* P2 q! z -> 'q36324'
g. p+ }$ n* ^; P9 M) o* A 8 n% L/ b0 a& f; |# |
space(n)
8 o6 Y! ^/ q7 G" M: i3 d返回由n个空格字符组成的一个字符串
4 _9 t$ n/ y a$ u) {" rmysql> select space(6); - _. F& t( ^* N
-> ' '
P2 K* X0 s1 ]- Q / ?6 ?; P6 s5 }' A
replace(str,from_str,to_str) * t' x4 k( C7 E B$ H3 v
用字符串to_str替换字符串str中的子串from_str并返回 * }( i W7 s1 C9 t/ Y7 v( h- _0 ]0 R
mysql> select replace('www.mysql.com', 'w', 'ww');
' s, ?3 ]2 f3 G- b -> 'wwwwww.mysql.com' 2 |3 C/ a" Z5 d! [* f2 M, u% t
3 s7 Y! U- m% L% [2 R) l$ l* G% V, d' qrepeat(str,count) , \# _2 R* Q4 Z) D! N4 n
返回由count个字符串str连成的一个字符串(任何参数为null时- \8 Y' M" z0 H7 q- O( M& x/ p
返回null,count<=0时返回一个空字符串) ! E Q: \+ l6 I5 Q+ t
mysql> select repeat('mysql', 3);
/ B/ l3 G8 {7 b -> 'mysqlmysqlmysql'
3 x; D0 W' C/ n- l : n2 w, m+ G" K# n8 X
reverse(str)
) Z0 Z! \# [- O! n4 C颠倒字符串str的字符顺序并返回 $ P& z0 E( Y# M+ l5 R# e3 Q2 G
mysql> select reverse('abc');
v- B5 R. l, v" ] J: y+ k -> 'cba' 9 D, ~- u5 ~! \3 n0 s3 ~" \6 ]1 {4 r
6 K, \5 [6 c7 x o+ q
insert(str,pos,len,newstr) - [ X" x: I9 C, E/ G$ ~, N
把字符串str由位置pos起len个字符长的子串替换为字符串' B8 p. w) }' o7 B. `/ {9 `
newstr并返回
$ I8 O: ^9 @+ H& E+ mmysql> select insert('quadratic', 3, 4, 'what'); 6 Q3 C) B- Z+ T" z0 q2 @, ]
-> 'quwhattic' - v1 h- }* J* r; F% _5 D
' ]4 t1 g# }6 R+ Xelt(n,str1,str2,str3,...) 0 U2 w8 \% s& `- l* t0 G/ g7 K
返回第n个字符串(n小于1或大于参数个数返回null)
8 X9 W0 E! ]6 D5 B5 [; ymysql> select elt(1, 'ej', 'heja', 'hej', 'foo');
; u( V, U. n' e4 P- K9 {; Q -> 'ej' ! ~& _: C" S! m( r; W
mysql> select elt(4, 'ej', 'heja', 'hej', 'foo'); + V0 h. q& P; N1 E, v/ h9 J
-> 'foo'
# ]( B3 o& a4 B
( t; C4 l7 [( D1 j7 ]field(str,str1,str2,str3,...)
3 ~: h Q" ]" z k返回str等于其后的第n个字符串的序号(如果str没找到返回0)
( i1 R4 t; R; }mysql> select field('ej', 'hej', 'ej', 'heja', 'hej',$ P/ t4 `: a+ g! s9 _' O( K
'foo'); 6 a& ~" \1 l" D! U+ x- O) F
-> 2
$ ^4 H* i& K2 \+ wmysql> select field('fo', 'hej', 'ej', 'heja', 'hej',4 R$ U4 i2 A' X- ]6 V: S2 P
'foo');
! q1 z4 h& N/ E% E" J -> 0 ; t4 L7 o( y8 ~2 F
: F7 b6 |" U/ i* Wfind_in_set(str,strlist)
# f/ [) }2 _) @* g9 F返回str在字符串集strlist中的序号(任何参数是null则返回& a- I L: O3 [" X
null,如果str没找到返回0,参数1包含","时工作异常)
) W" J! x1 a& V) h( H% P7 cmysql> select find_in_set('b','a,b,c,d');
* Y6 }' L3 x. q4 c; { -> 2
- z5 a. x7 X' B, S+ k( g
! c. h- r% ~9 y! j6 d/ Z+ B" a5 Gmake_set(bits,str1,str2,...)
4 V1 ]7 Q# P6 b$ I0 q把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应7 V0 [8 H1 Z( r/ {$ J
位置的字串选入字串集并返回(null串不添加到结果中)
& a6 B, K w. L! o! U- Rmysql> select make_set(1,'a','b','c');
. z$ j( Q4 C# h; q' `2 m" L -> 'a' 1 _# `+ w9 S/ A/ c: r$ `! J4 P% p% }' T
mysql> select make_set(1 | 4,'hello','nice','world'); " \$ Y' u, i; W4 Q4 V
-> 'hello,world'
4 T: Z9 T( N% T- R1 E; |mysql> select make_set(0,'a','b','c'); 0 q: u+ {4 V# o0 I
-> '' 0 H7 d+ z" z U8 H* G
9 Z% {5 o4 g$ p8 Z% D
export_set(bits,on,off,[separator,[number_of_bits]]) ?, y1 f; R, _1 A
按bits排列字符串集,只有当位等于1时插入字串on,否则插入/ u4 a# C# g% ^% Z U, P
off(separator默认值",",number_of_bits参数使用时长度不足补0
$ X9 H$ [. L6 T2 g) E, d而过长截断) ) w8 b+ P& d: T9 W. V4 e# d% ?
mysql> select export_set(5,'y','n',',',4) 8 ]- G0 r! z6 @$ b5 o
-> y,n,y,n
2 R. |" I6 Q# n2 J
M7 ]4 g1 n# n# V0 c' S3 q- Alcase(str) * n$ {5 t1 h# {% L' |, s
lower(str) 8 y$ e6 I" O; c: r
返回小写的字符串str ' ^: y- t/ e$ W7 g& d' |
mysql> select lcase('quadratically');
) a; n, ^9 E4 P+ B2 l -> 'quadratically' ! V5 p+ s& P" F
5 z0 a3 M3 \; c( p; r5 D' M2 H
ucase(str)
) p6 ~; b0 Q% @8 A( B: S* Supper(str) : _; V, I$ I6 j, ~: \& @
返回大写的字符串str ) C; F$ T. X6 [8 Z, G4 `5 K, u
mysql> select ucase('quadratically');
* I$ V( C( K' F: C% { -> 'quadratically'
, V5 B+ g g5 q; t9 W$ E
, k* U3 [6 O9 K7 Nload_file(file_name)
4 W" B. c( m6 ]) d- t: ~: U' ?读入文件并且作为一个字符串返回文件内容(文件无法找到,路径
$ O1 | |- R' q: H" e6 K. Z% _不完整,没有权限,长度大于max_allowed_packet会返回null) $ S V8 B; w q8 t+ Z2 _
mysql> update table_name set blob_column=load_file
7 h$ \" v: J/ w4 y$ K("/tmp/picture") where id=1;
2 b' t4 u7 g4 }. C& s3 |& F% @
5 b3 H' U3 g/ m2 N7 `2、数学函数
- J$ [( U' e! mabs(n)
1 W4 `0 ~( j8 L! z; f2 T9 k$ S8 \返回n的绝对值 $ v# C T' \( S" z, }- Q
mysql> select abs(2); 6 z- d; D7 g( d$ r
-> 2
6 _) N4 f8 Y' y* C8 O% B$ lmysql> select abs(-32);
5 Y& O" `/ s# e% Z! v J -> 32
1 m+ v% c/ M; @( z2 y! z, b t7 k* ^7 O8 g0 z, w8 a
sign(n)
! c5 ]/ L0 W6 S- m; V! n3 i3 O) l返回参数的符号(为-1、0或1)
: R4 G( C9 r" O4 s% Zmysql> select sign(-32); 2 e( V2 _! t& g! {
-> -1
0 ^ C( K+ f; _) j/ r+ V$ Kmysql> select sign(0); $ W" V* U8 o+ J0 o; Z! h& c
-> 0 ' G/ P6 |, }4 n( t8 \: m- R
mysql> select sign(234); D6 U2 ~4 d; r1 M9 a% W
-> 1
% B/ a" B! G" T) W! j1 m9 K # m" z% N- x5 R( s9 _* H i
mod(n,m) . T; h1 y' @' N" S' m5 L
取模运算,返回n被m除的余数(同%操作符)
3 I( T. E( v- Y. D1 u/ Dmysql> select mod(234, 10);
/ h- @; |/ r# U" Z9 T* x; I: f+ u -> 4 ( `/ ~7 R* L4 Z6 N9 _0 Y/ Y
mysql> select 234 % 10; 0 \) l. \1 _0 Y
-> 4 & H& c3 l$ n- S! v9 @6 C/ ^
mysql> select mod(29,9);
g3 W, s2 ^4 O9 r4 b; |, X -> 2 ( ?9 L2 f2 {) o. L6 C9 d! c
1 I. u* |/ x5 D
floor(n) 3 h+ A( ~+ k2 _
返回不大于n的最大整数值 # t y W- `/ s1 ]8 \4 a; b5 }
mysql> select floor(1.23);
0 x- I& E- Y% Q4 z. L& B, k -> 1 ( Q4 X' O# q5 c& t: Q! s
mysql> select floor(-1.23); ) S: S$ j! Z r( S3 H
-> -2 ! g$ m% s/ q& c6 i
; z2 R/ |) v+ Z4 H4 j# d& bceiling(n) # D, g+ \3 V! P0 P# c H2 y4 A
返回不小于n的最小整数值 9 c" ]( O0 C+ u7 M- p/ _4 G1 o: x k
mysql> select ceiling(1.23);
) K% V1 ~* ?# @8 y) h -> 2
& O S- O1 N+ [2 ~$ fmysql> select ceiling(-1.23);
# k* x# v$ r i, V -> -1
/ B. d3 O" _7 F0 k- M% i/ l
/ t n1 x; G: k! ]# iround(n,d)
( f; Y7 n& z- O0 _3 Z. A返回n的四舍五入值,保留d位小数(d的默认值为0) 1 Y0 d$ J" \, h* g6 {/ r5 z* W C
mysql> select round(-1.23); % U D: R9 Z+ i1 W7 Z- a" ]5 K
-> -1 5 m1 y( L c- z' B; q8 F+ \
mysql> select round(-1.58);
' c$ }6 N, ], h7 q' _ -> -2
/ T5 O, t4 ]$ Z7 D* R( {0 u- J0 ~7 }mysql> select round(1.58); 9 W3 E* n2 [4 P: q
-> 2
3 \! X, [2 Z# k/ X% P& h _mysql> select round(1.298, 1);
# {$ P5 H% k- D& c -> 1.3 4 ?$ ]+ i! ]+ j( R( {* |$ H
mysql> select round(1.298, 0); 1 M; f. U8 ~* u$ P) y
-> 1
; H4 R4 O1 }- q* P7 R \
) W- U: \- |" L/ J- Kexp(n) % a& r# H" \8 G. q; @0 F
返回值e的n次方(自然对数的底) 2 m2 i1 U) ?, X* D
mysql> select exp(2); 0 ^: a4 X( e F/ L
-> 7.389056 $ |7 r2 Y8 S. y
mysql> select exp(-2); ( w" ~- f4 Y7 M6 I( s6 P' L, ^
-> 0.135335
* U# ?+ ^7 w, ?8 k4 @
! \4 t& j" ~6 G" F% ~log(n) 1 B( Q$ m1 S4 f
返回n的自然对数 S5 I9 ]$ c. y; r6 _0 E' S( `
mysql> select log(2);
6 W% t3 z& [4 k4 w6 k) E& h -> 0.693147
; _3 u; _ c1 E; ~0 Q% l9 \7 P) Umysql> select log(-2);
& Y4 N N( [3 H0 z -> null
: i& e: K' `2 _$ u2 I9 j! o& X
& r- Q# h3 F* [3 ^. vlog10(n) ( S z& _6 N( Y& t7 z% C
返回n以10为底的对数
+ W8 i* ]. @0 e( v# t: R) Rmysql> select log10(2); ! S$ U" s% @4 a m+ _! F9 C1 a
-> 0.301030
A) g' `5 t8 I0 Qmysql> select log10(100);
* C; w: O7 G# I! g' i, v: C6 T; i -> 2.000000 8 R" D1 T0 b# F4 y0 E9 a+ B$ f
mysql> select log10(-100);
( T, E; f3 X5 m4 R1 x0 e -> null c/ A7 [! |: J- d3 T" ?
; y$ I) d/ r- X- H7 ^& D
pow(x,y)
) D7 s8 D2 t; x8 E( J- g/ i. npower(x,y)
. H9 z% w# {7 H, F* _/ T 返回值x的y次幂
* t% K6 z7 c7 t* W! {3 K/ r+ Xmysql> select pow(2,2); 4 ]/ q% u% L( l) j5 ]1 H; [
-> 4.000000 / f5 d% x: R! S; [
mysql> select pow(2,-2); ! o* o+ h0 C8 e- t7 t
-> 0.250000 ; e* m' r8 ^9 D- v% \- A ?
" v( L7 g* d3 rsqrt(n)
8 x) ?# U0 Q' y: w& v; O. \' T7 P% b 返回非负数n的平方根 4 X7 X( j) M1 M+ `; [6 j% q, |) k
mysql> select sqrt(4);
+ C* D) d) K, N0 F -> 2.000000 & k/ r% i; y U4 c# m" t) j
mysql> select sqrt(20); ) e4 C# J- a, s" U" ~
-> 4.472136
) [( ]. y$ y2 g9 _* q
7 B; z7 j, N- q2 fpi()
' d( |! |; b x9 D. O 返回圆周率
0 V9 Y; e4 S5 I7 z$ F4 w$ Gmysql> select pi(); 8 F4 d8 ^9 l* i9 Z6 V
-> 3.141593 " ]6 p' ]) _( ^& G) `
' T' [8 Z9 P/ h8 ?cos(n) / T- F2 t i, f) f3 m
返回n的余弦值 3 H/ a& s9 M, g) Y* q& Q" }
mysql> select cos(pi()); ) ?6 Z2 n% \4 A) J% i. k3 B5 w
-> -1.000000
4 A9 V- p- ~, }$ {3 b, k % ^2 Z) Q: w9 k+ m
sin(n)
% ~3 q5 w* x9 W* N* z4 b) N) C6 { 返回n的正弦值
5 p9 |2 t# [' hmysql> select sin(pi());
' D; ^- p( v l5 G; K -> 0.000000 5 {: J( }+ x3 k: n6 N
" S/ S% ~1 ^# E5 [3 S: ?tan(n) 5 l& c) `" I8 J: T
返回n的正切值 + ?, h. W/ F2 n1 v+ u! } e
mysql> select tan(pi()+1);
6 M/ O* u! u' g1 A& n2 O6 @5 R, w -> 1.557408 & b& S3 t; r4 N: R1 e
7 J {6 y) R: x2 J
acos(n) . X! j4 J/ X- N) { o, R
返回n反余弦(n是余弦值,在-1到1的范围,否则返回null)
/ r& t, b* ~) d; m- _" Wmysql> select acos(1);
0 M. n# }# Q# u% g! P1 I- c( f -> 0.000000
1 p3 ?# h+ l% e+ E# Y4 H! Smysql> select acos(1.0001);
v8 i. z! n# o$ r/ _ A& _ -> null 5 m' ^% W( j& y( B# Q) k0 o1 A
mysql> select acos(0); 7 J% G5 R0 Z( J: \
-> 1.570796 $ Y- C! G1 u5 S4 \# C7 v. f- d
7 |0 |* J% W J- B$ K3 D7 J3 v
asin(n)
- w" D9 H5 l) `6 S$ J, e8 Y, i! u1 ^返回n反正弦值
9 G) f# j, M( v. q+ Mmysql> select asin(0.2);
# D9 G7 R& u3 [( H# T0 x$ w7 x -> 0.201358 ; I! R$ _9 J' s5 W) v$ p
mysql> select asin('foo'); . F/ d& \2 l" l& g" @2 t
-> 0.000000 6 e6 S6 n1 M+ u/ q0 S
7 v) J- B5 ~% k( ? v u3 o* n1 p$ yatan(n)
2 ]9 E8 v9 W a5 C返回n的反正切值
|1 j- Q$ o+ }. r. ~* q3 wmysql> select atan(2); 1 n$ e* B+ X. [3 g: q0 R
-> 1.107149 , U0 p4 C7 K9 X0 J' w1 R
mysql> select atan(-2);
9 W( s* B) }3 H8 s+ H -> -1.107149
0 Q! Z1 C# d. K+ p; hatan2(x,y)
& x: {: D0 ?9 O6 _, F# @3 Z3 ]+ ^3 h 返回2个变量x和y的反正切(类似y/x的反正切,符号决定象限) 6 _( V: Q. X1 A0 h; @6 R2 b8 l
mysql> select atan(-2,2); $ l5 S1 ] \: N* D4 p( j
-> -0.785398
2 Z0 ~3 n% O% Y- [mysql> select atan(pi(),0); }( c" q1 Q$ h% [% P
-> 1.570796
( U+ L$ t2 p& d" `6 F7 H / h" W1 ?4 \7 h3 f/ z# [5 z" k5 e
cot(n) : l1 j; h. l2 m5 D: Y# k4 F
返回x的余切
% |5 C% R4 u. C7 l2 x4 amysql> select cot(12);
U5 i: v9 o, o -> -1.57267341
) ], Z" i& l7 A0 _mysql> select cot(0);
% V: r8 [, i6 ~& d5 R/ o/ e -> null - t5 J2 Z$ U. G' [- k
' {8 a- D9 [# w: Krand()
1 @: m8 V- |& B& N$ a. y7 G4 b6 hrand(n)
4 F" ^/ e1 z6 w7 n1 [返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)
5 }% ? ?- i) T# n+ L/ I
( @% I. ^; R" ?$ [! smysql> select rand();
$ A' I" H: Q, I4 F2 N -> 0.5925
. ]! U7 ^) s9 k& |3 r$ Pmysql> select rand(20); 4 a' d6 k' D! [! |- R! r1 I# @; |
-> 0.1811
- F8 q& a& e7 v! R6 K, Nmysql> select rand(20);
7 n Y% i- ]9 [# F2 b! S \! F' n, O -> 0.1811
0 a# o1 |( w# I/ Mmysql> select rand(); : R- W2 R3 d7 _$ K- V
-> 0.2079
9 y+ @/ H' T- f9 p7 T5 K. ~6 _) L5 Qmysql> select rand();
& a' I+ q+ S: h) u -> 0.7888 : q- P7 a% t" W- s: m2 y
6 D9 |9 l. Y7 q2 h! S
degrees(n)
7 {# S5 `0 l: e) B g; T$ {, q' p把n从弧度变换为角度并返回 ) q* Q) }* ]3 z3 C; i
mysql> select degrees(pi());
3 w8 Z* T2 ~$ C8 A+ y -> 180.000000 8 D# R$ r9 o, `( O: H: X, ?% {3 v
0 Y9 \9 B: m6 c4 x4 `' r. b2 s
radians(n)
: X, F9 Q* y" f6 _" F4 a$ `把n从角度变换为弧度并返回 " O6 u( A; L3 I) ?
mysql> select radians(90);
0 E2 X3 z4 o0 ] l1 P -> 1.570796
: a' F |# i& `$ j- y2 M5 P7 s
9 ?; Y- f M& t/ U4 m \truncate(n,d) 8 _8 C. i. U7 t3 I6 B
保留数字n的d位小数并返回
3 W6 _- t) R& l. O1 umysql> select truncate(1.223,1); 0 H' \; I5 O1 `; V! j0 n
-> 1.2 : d: p4 H1 `9 u: ~
mysql> select truncate(1.999,1); : N. S6 e1 Q. k, k
-> 1.9
# q P7 z: l. o3 zmysql> select truncate(1.999,0);
; w! @4 }7 A: |: D# g -> 1 * P/ M2 y! {% u/ u7 c2 M% ^* A
9 u9 u) x' E* E i$ i4 L) d4 V3 O ileast(x,y,...) 3 K* k" O% e. h! V. E; P7 c; v
返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较) 9 f, Q6 R; Z. p9 v0 H
mysql> select least(2,0); Z+ t& I$ e t, u: ~. _
-> 0 ( B7 o/ u# _; W ^( a. U
mysql> select least(34.0,3.0,5.0,767.0); 4 c5 D) ^' ]5 Q: @" k7 x
-> 3.0 - t4 n3 E# a2 q5 u8 p6 O' J
mysql> select least("b","a","c");
$ u0 V3 l! x W4 a# H' X z -> "a" * C: O: {7 ^. k* }- [- M# J: t
6 }2 Y1 O+ u6 Q; bgreatest(x,y,...)
* w/ m: P7 ^" r7 }. w: x" O' E6 Y. \返回最大值(其余同least()) ^5 L, P& J$ T8 C0 U
mysql> select greatest(2,0);
2 F" G" ?. d1 v5 }/ s/ Y$ W& W, O y" p -> 2
! ?# u! J* Y# k9 xmysql> select greatest(34.0,3.0,5.0,767.0); % @. Q1 m! K: q4 l/ }) w: _6 s
-> 767.0
5 E; |) {/ C J( \0 {mysql> select greatest("b","a","c");
0 W& t' E, y+ @- g. c# m. y8 k -> "c" . T6 n7 i2 a: U
+ x3 D }9 W# [' I. R+ ^5 ~( c3、时期时间函数 9 J" }& F( h1 m: f( Q5 w" c: i4 O
dayofweek(date) " f* |' t4 m( g* X. _
返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准) * @7 L$ ^* b/ x7 {* p t
mysql> select dayofweek('1998-02-03'); 1 H9 \2 q y4 {0 t) b
-> 3 * [& I9 v) B2 m2 P5 E1 [, R$ Y
& U+ _% f' W# o" h( i ~ b% hweekday(date)
8 f* a6 I8 _3 n* ?; z返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
5 X+ w' r* q0 o$ X. e( u# j
8 X4 }" x2 H; F. O& jmysql> select weekday('1997-10-04 22:23:00');
; F: Q6 b) }0 @5 U -> 5 4 G. S3 A9 ]9 i! N' g# a
mysql> select weekday('1997-11-05');
, d, `! }, _" F/ w+ i1 D; @ -> 2 + p7 C. {7 \1 N% A! i; X- ]
% p8 T5 g. J5 R) [: H+ j* k3 g# Rdayofmonth(date)
1 n6 _0 _# \. {' ^3 n返回date是一月中的第几日(在1到31范围内)
% O/ x$ |0 T& N) |& ~mysql> select dayofmonth('1998-02-03'); * n j1 G# i2 ]0 w
-> 3
+ c; D8 C% n/ R: Y
0 @+ E! N; Z A$ L! q6 O2 Z/ Y$ xdayofyear(date)
9 U$ R) t: U# t. P# M( v返回date是一年中的第几日(在1到366范围内) # h& w. |) `3 L
mysql> select dayofyear('1998-02-03');
# A# A. L! o# |" l) _8 F -> 34
) v) s8 k- I: g, Z. X( q+ o* D % Z0 P0 n& K& c* J5 H" P
month(date)
' e$ w; z$ k. H6 g- h7 \0 o返回date中的月份数值 ; p& ]0 ~6 |9 v) [/ |8 o
mysql> select month('1998-02-03');
- G" e2 S! m7 D -> 2
. ]& N+ E# }8 u R ( K+ ~1 X9 @5 \( V- F4 |3 Z. F
dayname(date)
9 g6 ~" n1 [, G5 f W! t+ @5 ~" W返回date是星期几(按英文名返回)
2 b$ J# G9 A( ~$ dmysql> select dayname("1998-02-05");
a/ _; |$ M/ c -> 'thursday' % |' v4 X6 o2 L. G! A! x( a7 U
3 m2 o, ~& `( `' qmonthname(date) 2 D5 j1 B0 _# V# h
返回date是几月(按英文名返回)
- v% L' S7 [7 c2 ^- }. e- Bmysql> select monthname("1998-02-05"); 7 W/ W6 l: k( B6 P
-> 'february' 7 Q# d0 Y5 Z5 j A G+ j8 e
9 V& P* B; K! C8 X3 v2 ^2 W2 Z2 \quarter(date) ' O9 K0 e/ s" h$ d h9 J- |
返回date是一年的第几个季度 g+ U/ A f0 ^( H: p9 o& z
mysql> select quarter('98-04-01');
7 \7 j ?6 u6 L& x1 ] -> 2 " @+ F% M8 x$ F/ A0 Z3 t* T3 p
( N f' C! [# p, s& o, Dweek(date,first)
9 \' }) w9 g M8 i3 U返回date是一年的第几周(first默认值0,first取值1表示周一是
" W9 M1 [# U8 t' {) J1 f+ K周的开始,0从周日开始) 9 r2 f( N; o, c6 s
mysql> select week('1998-02-20');
6 ?7 @% d& U% g -> 7
: E8 H/ u: u/ f2 W5 Kmysql> select week('1998-02-20',0);
2 \# @* J D" O; T$ z! Z6 w1 J2 J -> 7
1 g, u: J, e* V( C w, A cmysql> select week('1998-02-20',1); * r$ E: `0 R4 M6 S* i" Z3 ~! w
-> 8 - S7 A% k" d* `4 {6 U* ^
$ n9 y$ ^# { }- T" x/ L
year(date) ) O6 \. |7 C/ d5 \
返回date的年份(范围在1000到9999)
0 W* _+ q9 F/ } l# z; p; u" ymysql> select year('98-02-03');
7 p: e; `4 q; b& D6 M -> 1998
; q+ `5 J8 q. ?0 x, s5 }/ F
! V7 H; m0 ~- K3 @) Nhour(time)
! r* B4 R& C* A& j返回time的小时数(范围是0到23) - W8 g: k+ ?. o+ R+ ~% |1 X
mysql> select hour('10:05:03');
0 Y5 s8 P% M# L+ O1 B -> 10 & H0 P" b$ l) \* G% C- u$ {
( F& B6 P, \- N6 Fminute(time) 2 l- b6 ?- g% w. q
返回time的分钟数(范围是0到59) y6 p( L7 [7 B( t4 v3 R( y
mysql> select minute('98-02-03 10:05:03');
( q. ~1 N* @* a4 N -> 5
6 Q2 _$ T; j/ z. }1 V
1 v. ?. |# {: o9 k7 Q' Zsecond(time)
6 @' o( F; v; M4 Z! K返回time的秒数(范围是0到59) ) s9 Z+ G' I7 v6 N4 c, [, |9 E
mysql> select second('10:05:03');
) ^7 z/ P6 o7 y; N7 T/ ]# m -> 3 ' f# l9 ]) }8 t) l1 G( C" O
7 J, Y; l0 R1 {1 l# A( Z% D
period_add(p,n)
2 ^4 L6 T& S5 @增加n个月到时期p并返回(p的格式yymm或yyyymm)
: W0 g( q& X! z. Z* q: a, Lmysql> select period_add(9801,2); + O' K: |( ?' n' _
-> 199803
- R: m6 m! M4 X3 w' v( ]: o # J9 o0 W ~- I" y% t; a2 k4 {; N$ W# z
period_diff(p1,p2)
7 A( V# ]) ~: v' K0 ~2 G9 L3 ^: q返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm) , Q; X+ b# X( L( @ e! `
mysql> select period_diff(9802,199703);
3 k0 Q- U! k3 j4 r* F -> 11 D( ]% Z# C+ |, Q9 \# G* J3 \
' O2 Z: g- ^- x+ j+ t/ }5 H9 Z. w2 q
date_add(date,interval expr type) ; j7 U2 @ [5 U# A4 L8 D- ]
date_sub(date,interval expr type) / S n, A" \5 G3 X/ W8 T
adddate(date,interval expr type) : O! l% e% G/ z, ~
subdate(date,interval expr type) ' [- ]3 Z7 { h2 n* ^
对日期时间进行加减法运算
6 |& I; i! d! Q0 K1 {' Q1 Y(adddate()和subdate()是date_add()和date_sub()的同义词,也0 w! ]3 @8 e7 g+ i% l
可以用运算符+和-而不是函数 ' V$ v2 ^: `) S3 U+ s
date是一个datetime或date值,expr对date进行加减法的一个表3 r: y" ]# b* R% n' w
达式字符串type指明表达式expr应该如何被解释 / h' u9 ?4 l: E) Z8 R
[type值 含义 期望的expr格式]: $ h s( d) d o# ~5 u0 u
second 秒 seconds - f/ Q& k' W+ _1 M3 o
minute 分钟 minutes
6 Z( u- g2 X# B# B% _: `( |: ]& {( ?8 H hour 时间 hours
/ _5 s6 f! y7 H day 天 days
# H6 A x1 N u+ a: R0 B month 月 months
' X+ `+ h2 g% c year 年 years
( J- E+ ?* S ^+ z; K6 t6 C minute_second 分钟和秒 "minutes:seconds" 4 r9 u8 o8 |, }- n. m' W
hour_minute 小时和分钟 "hours:minutes" 0 R& W& ~) T+ ~, }6 Z
day_hour 天和小时 "days hours" 6 r3 P2 X, s1 y2 z) C
year_month 年和月 "years-months" + l, E! r" H7 D" f q: J
hour_second 小时, 分钟, "hours:minutes:seconds"
9 _5 T$ c* S9 P8 G$ \$ Q+ v day_minute 天, 小时, 分钟 "days hours:minutes" $ a5 N) j' }, [7 z3 \* x+ s8 \2 K
day_second 天, 小时, 分钟, 秒 "days; e) B" z! m l) B0 B
hours:minutes:seconds"
' n! h" x4 D3 T% `2 O3 [; S3 A+ W8 ~ expr中允许任何标点做分隔符,如果所有是date值时结果是一个6 j' ?0 O1 ~* C) J
date值,否则结果是一个datetime值) / n" Z! w: n3 D6 `3 z/ G( h7 x
如果type关键词不完整,则mysql从右端取值,day_second因为缺
5 t$ B9 G6 B. R少小时分钟等于minute_second) 7 l, y; j: }' o6 N; k( {+ a9 c
如果增加month、year_month或year,天数大于结果月份的最大天+ ~3 ] m q/ k$ u" N! e5 ?2 N( J3 L
数则使用最大天数)
6 c" x1 Z* X5 L1 E, ?, Dmysql> select "1997-12-31 23:59:59" + interval 1 second;
6 w6 Z0 _3 K& T4 V# l2 C& ~! q
- w0 W% A! d5 b# h -> 1998-01-01 00:00:00
7 B5 k( x5 \0 ]. ?4 m' jmysql> select interval 1 day + "1997-12-31";
: |' P2 F. J+ ~' w -> 1998-01-01 - x& Y1 @, n& A* @
mysql> select "1998-01-01" - interval 1 second; % ^! L* r% Y+ T5 |2 C
-> 1997-12-31 23:59:59 ! u# d" i7 d$ Q5 f/ ]0 A
mysql> select date_add("1997-12-31 23:59:59",interval 1: @$ {$ D6 w& I
second); & ?0 F+ H: V; c1 P; {+ ^
-> 1998-01-01 00:00:00 & l4 K/ \6 A) ^! v0 r2 t7 a
mysql> select date_add("1997-12-31 23:59:59",interval 1& `* r4 H2 s: S- N/ m0 C
day); R: U/ h( b/ I. t, z; o
-> 1998-01-01 23:59:59 " S+ V g7 ~' k- [4 I
mysql> select date_add("1997-12-31 23:59:59",interval
# k( A) Y7 N$ {0 \) o"1:1" minute_second); * U# ]1 u7 |" p8 o, N
-> 1998-01-01 00:01:00 ' ~( V+ P, F0 s
mysql> select date_sub("1998-01-01 00:00:00",interval "1# E( J, s: P' d- c" K, B0 G$ V
1:1:1" day_second);
# b) t2 ~/ Q% k, S7 t -> 1997-12-30 22:58:59
) _, p D" m$ S5 C# B* Mmysql> select date_add("1998-01-01 00:00:00", interval "-1
: t; h, G+ ?# T10" day_hour);
9 w% h' q$ B, A' ?. B -> 1997-12-30 14:00:00
" e/ D& W. h, \( I3 Pmysql> select date_sub("1998-01-02", interval 31 day); ' X6 Q: w0 \0 o5 ~2 k4 Z
-> 1997-12-02
% s6 p. S- d5 F1 pmysql> select extract(year from "1999-07-02"); , s6 |5 ]6 R5 Q& U* Y0 o
-> 1999 : e9 @" k3 c1 a4 ]6 _- u) X5 O
mysql> select extract(year_month from "1999-07-02; J4 V" ~) Z! ?) C) U
01:02:03");
1 p7 @) y8 `% M4 d' \: a -> 199907 ( ]( [; H" ?* q5 m# J; \, e0 [
mysql> select extract(day_minute from "1999-07-02. P p4 V2 j: ?2 k# p) K
01:02:03"); - w. `/ z3 L6 d! ?1 J4 i
-> 20102 4 e u9 }7 a2 R' }/ z$ s
- p) d- A; E1 X$ J
to_days(date) 7 G2 W5 G0 E: c& O
返回日期date是西元0年至今多少天(不计算1582年以前) 2 C+ ~( l" D" Z8 n8 m
mysql> select to_days(950501);
* O G6 s, l- t E5 ^; ? -> 728779
3 h* O" F! \+ e2 L) _ o; umysql> select to_days('1997-10-07');
4 c% b1 j/ k) b/ F8 a- w -> 729669 ; l( P; G$ G; [0 [
; k( X- p6 f; W" E6 R* M: p* w
from_days(n)
* @6 u+ w1 ]1 a3 h0 ]- i) @) } 给出西元0年至今多少天返回date值(不计算1582年以前)
7 e& M o6 P$ F. E1 emysql> select from_days(729669);
2 B: o+ `2 H3 }$ [: z -> '1997-10-07'
2 ^/ Q) M; l: X# | . P/ v0 I1 F, K! q7 Z
date_format(date,format)
; ^/ `' a" O2 X, y' ~0 i1 Q$ N 根据format字符串格式化date值 ! K6 E7 H, K3 ?/ t9 L0 q
(在format字符串中可用标志符:
1 {3 ~ O: |) Y! O/ z( q) A6 u %m 月名字(january……december) # x8 z) U: U. g5 N& J7 L) w
%w 星期名字(sunday……saturday)
1 ?& y- \: D# R/ x4 r %d 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) % [3 O% x1 t( @ S3 v* S4 m
%y 年, 数字, 4 位
2 r2 v8 K1 S% E- ]2 r6 [ %y 年, 数字, 2 位 2 J* O1 S0 ?# P- e# c) R5 w0 s3 @
%a 缩写的星期名字(sun……sat)
! d/ L( ?9 l3 O4 H. L! B( q; G8 | %d 月份中的天数, 数字(00……31)
. Y# G9 s/ b, R: k& m %e 月份中的天数, 数字(0……31) , d* X) g( M+ q3 |% z" M
%m 月, 数字(01……12)
& T# A8 K, @9 e. D. e, c %c 月, 数字(1……12)
t& Q, p- E% f0 U' H7 x2 x %b 缩写的月份名字(jan……dec) / q n9 L5 P* X- X% C9 U2 e
%j 一年中的天数(001……366)
' o$ z, Y. }& _; T" I) I* { %h 小时(00……23) $ \+ D& Q3 v7 D* U1 ^$ \. |
%k 小时(0……23)
; I0 n* g5 ~0 [* Q( K8 ~, F %h 小时(01……12)
5 a' w7 z" A' k. T }+ U u %i 小时(01……12) 3 o5 w- v! v$ m2 l. m! ^
%l 小时(1……12)
0 `1 g z F' |. k$ ~# ~ %i 分钟, 数字(00……59) + Y% o5 Q; j8 y7 A
%r 时间,12 小时(hh:mm:ss [ap]m) 3 |4 H- Y9 h! R+ g! }% o3 t1 w" w
%t 时间,24 小时(hh:mm:ss)
+ m( W6 N8 B; H. i %s 秒(00……59)
: J `, g6 P' ?$ A0 Z: L/ ` %s 秒(00……59) . C, S0 { r7 D, @4 j* @& U
%p am或pm
X- n: h8 v* e+ u9 x/ f& p %w 一个星期中的天数(0=sunday ……6=saturday ) ( x" G! @, F4 Z4 p! U
%u 星期(0……52), 这里星期天是星期的第一天
2 {! J. A- B* E3 b3 m) O %u 星期(0……52), 这里星期一是星期的第一天 4 ]) q, t8 }1 A8 u
%% 字符% ) g- x( V: H6 i8 R* P, z5 b+ p$ J, {
mysql> select date_format('1997-10-04 22:23:00','%w %m %
. ?$ m- Q7 F6 X |2 Cy'); ( U/ C* }* M; B" f' U! | [0 X/ c
-> 'saturday october 1997'
1 S- f4 v- S- g- a! Tmysql> select date_format('1997-10-04 22:23:00','%h:%i:%
& O: Q+ W5 D& B( {$ q# A3 b! W8 G9 ls'); I4 W5 r7 O5 D9 Z3 f. E" ~! E z
-> '22:23:00'
) h! Y7 d# D' A7 X% r i7 Emysql> select date_format('1997-10-04 22:23:00','%d %y %a6 E- z1 ]; @8 h7 G
%d %m %b %j');
" x) X) g0 y3 ^* e -> '4th 97 sat 04 10 oct 277' ' @# d; N" J& f6 i% q0 E4 C& N
mysql> select date_format('1997-10-04 22:23:00','%h %k %i
5 e4 n1 ?. v W%r %t %s %w'); : j/ h, D% N& h' ?9 |# A, U
-> '22 22 10 10:23:00 pm 22:23:00 00 6' 4 Z& G- A# H: c$ _
- @5 ^; A; |4 ~5 z" E0 l, o
time_format(time,format) 4 A8 K/ Q* b J0 \) V& H' u# k
和date_format()类似,但time_format只处理小时、分钟和秒(其" m3 B& r, |& r
余符号产生一个null值或0) 0 {$ ^* i' v4 M" S, f
! M. z" M3 S* ecurdate()
; h% k* l }, R3 _9 Hcurrent_date() + h2 r! ?; ?7 K S8 x; G# ~2 N1 n7 b
以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所; [; N2 C! S4 u, p' s
处上下文是字符串或数字) . R, R5 i9 o9 f& w5 t( m/ |
mysql> select curdate();
/ M$ z4 `. f1 D* I y$ G -> '1997-12-15'
; }/ J Y$ b$ R9 ^mysql> select curdate() + 0;
4 P3 D p. U0 N/ v; ] -> 19971215
- o) _/ I+ Z8 q( ]
+ J& H3 w& r$ @' e, acurtime() 0 G8 G- l) E# S# L: d& y
current_time()
) U/ j4 t9 }6 i' F5 G) } 以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上
$ o$ K: {% |4 {4 n下文是字符串或数字)
9 Q4 q, Y# E. K' h! x+ Qmysql> select curtime(); ; E. v! W8 x" b; s: E2 ? a
-> '23:50:26'
) G% X6 c/ b8 B5 X- F5 Emysql> select curtime() + 0; + n! K/ ^4 ?4 ]
-> 235026 - g5 X' V4 r3 F9 u" I! U
d3 Y( S# P5 X9 h+ Lnow()
9 n3 m3 @; S0 M2 C9 h6 v+ e5 Dsysdate() 9 |1 }' e& y* P
current_timestamp() 3 B! }4 N4 b4 s
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期
& B" y) ~. {, o! f时间(根据返回值所处上下文是字符串或数字)
& B3 _ N( c7 Rmysql> select now();
( T9 s1 z3 G; ?4 g1 T/ k( Z5 C3 ? -> '1997-12-15 23:50:26' : A4 b: j& |6 }/ Y. b; O- u
mysql> select now() + 0;
; A3 t% z4 q; t: e' r -> 19971215235026
3 m) C, R8 R" e) N" \1 Q
$ z$ \9 H0 g! m3 m: y9 Lunix_timestamp()
+ H/ J4 z/ o4 D( H' tunix_timestamp(date)
- ?3 d, B2 K2 Z: A. l6 M- w返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒
! u2 @% [5 H. s+ E数,date默认值为当前时间) r/ h0 V) L7 w: u
mysql> select unix_timestamp(); + q7 p# N. M6 E4 A5 k* f! J) o
-> 882226357 7 u9 r; ~$ w) |3 X) g
mysql> select unix_timestamp('1997-10-04 22:23:00'); ( \2 V i( E7 O6 C! G8 H
-> 875996580
: T: C: L/ Z0 ]3 L/ g* O5 V 9 L+ ~% [5 M, w2 j
from_unixtime(unix_timestamp) 3 D, v/ q: |9 A6 P& Q' k% d/ ?
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的7 h T9 J( k1 B3 P$ \$ ^* i
值(根据返回值所处上下文是字符串或数字)
7 |3 ]$ m1 p( h1 H3 w& y' k* N2 O/ dmysql> select from_unixtime(875996580);
9 W2 j. V, b4 w. `3 m8 p3 F9 R -> '1997-10-04 22:23:00'
% O/ e- r& u- j6 ?mysql> select from_unixtime(875996580) + 0;
' d5 I+ T) M0 o+ k1 v -> 19971004222300
% N% A' S* b1 I5 f9 E8 ~
& j4 z" f, z$ G% Nfrom_unixtime(unix_timestamp,format)
$ K$ _# S4 B* k4 i* @ d, h以format字符串格式返回时间戳的值
# g3 m7 P! ~2 q/ B2 G6 l1 ?mysql> select from_unixtime(unix_timestamp(),'%y %d %m %, c, l" N% \; v1 E h
h:%i:%s %x');
; \* `0 E7 }6 S) `; C -> '1997 23rd december 03:43:30 x'
. h9 W6 a& d) u7 i5 u # d; r0 | R' c8 k
sec_to_time(seconds)
$ ]1 S( P( S# `& a. k2 a; o以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字) 2 n3 ~$ W/ D' b o' w
mysql> select sec_to_time(2378); 9 k2 v: n$ E6 B8 P. O7 ^9 Y
-> '00:39:38' . @% d8 D4 I+ _6 P5 y j
mysql> select sec_to_time(2378) + 0; 9 R k: G g5 |0 u, U
-> 3938
( p. \1 l3 v* B4 T! E
! Y4 ?. f4 u$ W5 Otime_to_sec(time)
/ o) v8 |3 S$ S' ]7 c3 v& O9 }返回time值有多少秒 : g3 F+ w/ V! |* E: t) G2 A( P
mysql> select time_to_sec('22:23:00'); $ c+ F7 C( S: `2 C: Y+ c
-> 80580
3 a/ K1 P2 [3 l1 {" b6 Emysql> select time_to_sec('00:39:38');
) \: [" o! ]% A& n7 C4 A -> 2378 K( L) k+ d* Y. R+ M4 @
& r. n8 W% |" O, a6 O+ E' V
转换函数
) P6 J4 p* d% Y& }* z5 C) Jcast
& p1 y- D" M+ G8 S7 M" {) R用法:cast(字段 as 数据类型) [当然是否可以成功转换,还要看数据类型强制转化时注意的问题]+ T! C% K7 {$ k- b
实例:select cast(a as unsigned) as b from cardserver where order by b desc;
+ W3 R9 b1 e, C f, mconvert:
( d7 K. ^9 J, N1 w N: ^& k3 l用法:convert(字段,数据类型)# O9 F% L% w& V1 T. \+ I7 n: C9 l$ T
实例:select convert(a ,unsigned) as b from cardserver where order by b desc;
' L8 p- d5 f% w, j |