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