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