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