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