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