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