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