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