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