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