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