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