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