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