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