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