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