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