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