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