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