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