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