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