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