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