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