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