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