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